我有一个订购的 Pandas Dataframe。
a0 b0 c0 d0 370025442 370020440 370020436 \
1 31/08/2014 First Yorkshire 53 05:10 0 0.8333 1.2167
2 31/08/2014 First Yorkshire 53 07:10 0 0.85 1.15
3 31/08/2014 First Yorkshire 53 07:40 0 0.5167 0.7833
4 31/08/2014 First Yorkshire 53 08:10 0 0.7 1
5 31/08/2014 First Yorkshire 53 08:40 NaN NaN NaN
6 31/08/2014 First Yorkshire 53 09:00 0 0.5 0.7667
7 31/08/2014 First Yorkshire 53 09:20 0 0.5833 1
8 31/08/2014 First Yorkshire 53 09:40 0 0.4 0.7
9 31/08/2014 First Yorkshire 53 10:20 0 0.5333 1.0333
10 31/08/2014 First Yorkshire 53 10:40 0 0.4833 1
11 31/08/2014 First Yorkshire 53 11:00 0 0.3667 0.7
12 31/08/2014 First Yorkshire 53 11:20 0 0.5333 1.15
13 31/08/2014 First Yorkshire 53 11:40 0 0.3333 0.7667
14 31/08/2014 First Yorkshire 53 12:00 0 1.0167 1.5
15 31/08/2014 First Yorkshire 53 12:40 0 0.75 1.0333
.. ... ... .. ... ... ... ...
737 25/10/2014 First Yorkshire 53 21:40 0 1.0167 1.3
738 25/10/2014 First Yorkshire 53 22:40 0 0.5667 1
但是,当我将其转换为 SQL 时,顺序发生了变化(从第 13 行开始)并变为:
a0 b0 c0 d0 370025442 370020440 370020436 \
0 31/08/2014 First Yorkshire 53 05:10 0 0.8333 1.2167
1 31/08/2014 First Yorkshire 53 07:10 0 0.85 1.15
2 31/08/2014 First Yorkshire 53 07:40 0 0.5167 0.7833
3 31/08/2014 First Yorkshire 53 08:10 0 0.7 1
4 31/08/2014 First Yorkshire 53 08:40 None None None
5 31/08/2014 First Yorkshire 53 09:00 0 0.5 0.7667
6 31/08/2014 First Yorkshire 53 09:20 0 0.5833 1
7 31/08/2014 First Yorkshire 53 09:40 0 0.4 0.7
8 31/08/2014 First Yorkshire 53 10:20 0 0.5333 1.0333
9 31/08/2014 First Yorkshire 53 10:40 0 0.4833 1
10 31/08/2014 First Yorkshire 53 11:00 0 0.3667 0.7
11 31/08/2014 First Yorkshire 53 11:20 0 0.5333 1.15
12 31/08/2014 First Yorkshire 53 14:00 0 0.4833 1.0167
13 31/08/2014 First Yorkshire 53 16:20 0 0.6833 1.15
14 31/08/2014 First Yorkshire 53 23:10 None None None
.. ... ... .. ... ... ... ...
736 25/10/2014 First Yorkshire 53 21:40 0 1.0167 1.3
737 25/10/2014 First Yorkshire 53 22:40 0 0.5667 1
数据是正确的,只是更改了行的顺序(从 SQL Server Management Studio 中查看 SQL 表可以确认这一点)。我检查了操作前后的输入表,没有改变,所以顺序问题一定是在转换成SQL的时候。
用于创建 SQL 表的代码是:
engine = sqlalchemy.create_engine("mssql+pyodbc://*server*?driver=SQL+Server+Native+Client+10.0?trusted_connection=yes")
conn = engine.connect()
art_array.to_sql(theartsql, engine, if_exists="replace", index=False)
(实际指定服务器的地方)
可能是什么原因造成的,我该如何解决?任何帮助将不胜感激...
编辑:我应该提到我使用的版本是:
Python 版本:2.7.8
Pandas 版本:0.15.1
SQLalchemy 版本:1.0.12
需要维护这些以与其他软件兼容。
最佳答案
那是正常。 SQL 表不维护行顺序。您需要“订购依据”才能获得正确的订单。在将数据移动到 SQL 之前,您可以包含一个行 ID(或索引)。那么,那么你就可以在Sql中“order by”了。
尝试这样的事情:
df
a
0 1.00
1 2.00
2 0.67
3 1.34
print df.reset_index().to_sql(xxxx)
index a
0 0 1.00
1 1 2.00
2 2 0.67
3 3 1.34
然后在 SQL 中,您可以“按”索引“排序”。“排序”语法可能因 SQL 数据库而异。
关于python - Pandas to_sql 中行的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38703823/