【发布时间】:2020-01-23 20:49:19
【问题描述】:
目前在我的项目中,我正在尝试按单个列对 CVS 表的行进行排序,我正在使用 PANDAS,并且我已经看到互联网上发布了几个示例,但是当我自己尝试实现这一点时,我无法到。
db = pd.read_csv(databasefile, skip_blank_lines=True, names=['ExampleOne','ExampleTwo','ExampleThree','ExampleFour'], header=1)
db.drop_duplicates(inplace=True)
db.sort_values(by=['ExampleOne'], ascending=[True])
db.to_csv(databasefile, index=False)
在上面的代码中,我的想法是我将 CSV 转换为供 PANDAS 使用的数据框,在该数据框中,我将删除所有重复的行并按 ExampleOne 列进行排序。最后,我将该信息发送回 CSV。但是,在代码运行无误后查看 CSV 时,数据未按任何顺序排序。
这是 txt 格式的 CSV,前 60 行左右已排序,但这是因为在此过程的早期我将多个 CSV 组合成一个 CSV。
感谢您的阅读!我将不胜感激任何人让我尝试的任何帮助或建议,因为这个问题让我感到沮丧。再次感谢您的阅读!
【问题讨论】:
-
db.sort_values(by=['ExampleOne'], ascending=[True], inplace=True)或者您可以链接操作:db.sort_values(by=['ExampleOne'], ascending=[True]).to_csv(databasefile, index=False)。 -
@QuangHoang 我还没有尝试过,因为我正在更新我的计算机上的一些软件,将 .to_csv 函数链接到排序函数实际上会有所不同吗?谢谢您的回复,等我的电脑恢复在线时一定要检查一下
-
是的,没有 inplace 的 sort_values 返回排序后的数据框,而不是对原始数据框进行排序。
-
@QuangHoang 非常感谢!现在完美无缺,我没有意识到排序并没有取代原始数据框。再次感谢您!