Pandas to_sql 中的行排序

2024-04-09

我有一个已订购的 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

熊猫版本:0.15.1

SQLalchemy 版本:1.0.12

这些需要保持与其他软件兼容。


That is Normal. Sql 表不维护行顺序。您需要“order by”才能获得正确的顺序。在将数据移动到 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 中,您可以“order by”索引。“order by”语法可能因 SQL 数据库而异。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas to_sql 中的行排序 的相关文章

随机推荐