Python pandas到sql-保留从pandas内存到postgres的行顺序
经过大量的处理,我在内存中有一个熊猫数据帧。在这个过程之后,我根据1列对数据帧进行排序 然而,当我将这个数据帧写入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',
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”子句。