按字符串日期对熊猫数据框进行排序而无需转换

时间:2018-12-05 17:20:11

标签: python pandas sorting datetime

设置

我有一个数据框,其中除其他外还有一列,其日期以字符串表示。

日期格式为日/月/年,例如2018年5月12日。

test_df数据框看起来像

   date_created
0    05/12/2018
1    04/12/2018
2    04/12/2018
3    03/12/2018
4    02/12/2018
5    30/11/2018
6    30/11/2018
7    30/11/2018
8    30/11/2018
9    29/11/2018
10   02/12/2018
11   29/11/2018
12   29/11/2018

问题

我希望按日期排序,例如,

   date_created
0    05/12/2018    
1    04/12/2018
2    04/12/2018
3    03/12/2018
10   02/12/2018    
4    02/12/2018
5    30/11/2018
6    30/11/2018
7    30/11/2018
8    30/11/2018
9    29/11/2018
11   29/11/2018
12   29/11/2018

但紧跟this example

test_df.sort_values(by='date_created', inplace=False, ascending=True)

给,

   date_created
4    02/12/2018
10   02/12/2018
3    03/12/2018
1    04/12/2018
2    04/12/2018
0    05/12/2018
9    29/11/2018
11   29/11/2018
12   29/11/2018
5    30/11/2018
6    30/11/2018
7    30/11/2018
8    30/11/2018

如何在一个月内 取消订单?

1 个答案:

答案 0 :(得分:2)

推荐解决方案是将您的系列转换为datetime,然后进行排序:

df['date_created'] = pd.to_datetime(df['date_created'], dayfirst=True)

res = df.sort_values('date_created', ascending=False)

print(res)

   date_created
0    2018-12-05
1    2018-12-04
2    2018-12-04
3    2018-12-03
4    2018-12-02
10   2018-12-02
5    2018-11-30
6    2018-11-30
7    2018-11-30
8    2018-11-30
9    2018-11-29
11   2018-11-29
12   2018-11-29

如果您坚持保留object dtype系列,则可以然后通过单独的操作将其转换回字符串:

res['date_created'] = res['date_created'].dt.strftime('%d/%m/%Y')
相关问题