Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pandas到sql-保留从pandas内存到postgres的行顺序_Python_Pandas_Postgresql - Fatal编程技术网

Python pandas到sql-保留从pandas内存到postgres的行顺序

Python pandas到sql-保留从pandas内存到postgres的行顺序,python,pandas,postgresql,Python,Pandas,Postgresql,经过大量的处理,我在内存中有一个熊猫数据帧。在这个过程之后,我根据1列对数据帧进行排序 然而,当我将这个数据帧写入Postgres表时,有时行的顺序不会被保留,就像它在内存中一样 我怎样才能解决这个问题 代码段: result_df = result_df.sort_values(by=['D1RowNr']) result_df.to_sql(table_name,engine, schema = schema, if_exists='replace',

经过大量的处理,我在内存中有一个熊猫数据帧。在这个过程之后,我根据1列对数据帧进行排序

然而,当我将这个数据帧写入Postgres表时,有时行的顺序不会被保留,就像它在内存中一样

我怎样才能解决这个问题

代码段:

result_df = result_df.sort_values(by=['D1RowNr'])

result_df.to_sql(table_name,engine, schema = schema, 
                 if_exists='replace', index= False, 
                 method = 'multi', chunksize = 300)
        

数据大小:
~3000行X~90列
,因此我使用
方法='multi'
chucksize=300
。如果没有这些参数,则需要花费大量时间,有时机器会挂起。

我建议在数据帧中添加一个额外的列,按照所需的顺序,然后在
SQL
中按
排序:

result_df['Order'] = result_df.reset_index().index

创建一个从0到len(result_df)的额外列,您可以在SQL数据库中轻松使用该列进行排序。

谢谢,有什么办法吗?如果我不想在SQL DB上排序?我不这么认为,我只是发现这个问题有同样的问题:用户提供了一个类似的答案。明白了,但是你有一些关于为什么会发生这种情况的信息吗?似乎预期的行为,就像字典是为了表无序排序一样,根据定义,允许通过SORT BY/ORDER BY关系表进行排序是一个无序集或元组(行)。存储时没有这样的东西顺序。获取特定顺序的唯一方法是在select语句上使用“ORDERBY”子句。