【发布时间】:2021-04-04 18:42:19
【问题描述】:
我正在尝试解析 csv 文件中的数据,按日期对它们进行排序并将排序后的数据框写入新的 csv 文件中。
假设我们有一个非常简单的 csv 文件,其中的日期条目遵循 day/month/year 模式:
Date,Reference
15/11/2020,'001'
02/11/2020,'002'
10/11/2020,'003'
26/11/2020,'004'
23/10/2020,'005'
我将 csv 读入 Pandas 数据框。当我尝试根据升序中的日期对数据框进行排序时,我希望数据按如下方式排序:
23/10/2020,'005'
02/11/2020,'002'
10/11/2020,'003'
15/11/2020,'001'
26/11/2020,'004'
遗憾的是,这不是我得到的。
如果我尝试将date 转换为datetime 然后排序,那么某些日期条目将转换为月/日/年(例如 2020 -10-23 而不是 2020-23-10),这会打乱顺序:
date reference
2020-02-11 '002'
2020-10-11 '003'
2020-10-23 '005'
2020-11-15 '001'
2020-11-26 '004'
如果我排序而不转换为datetime,那么排序也是错误的:
date reference
02/11/2020 '002'
10/11/2020 '003'
15/11/2020 '001'
23/10/2020 '005'
26/11/2020 '004'
这是我的代码:
import pandas as pd
df = pd.read_csv('order_dates.csv',
header=0,
names=['date', 'reference'],
dayfirst=True)
df.reset_index(drop=True, inplace=True)
# df.date = pd.to_datetime(df.date)
df.sort_val
df.sort_values(by='date', ascending=True, inplace=True)
print(df)
df.to_csv('sorted.csv')
为什么按日期排序这么难?有人可以解释为什么上述排序尝试失败了吗?
理想情况下,我希望sorted.csv 具有日/月/年格式的日期条目。
【问题讨论】:
标签: python-3.x pandas dataframe