在数据框中排序日期值不起作用

时间:2019-12-27 21:21:35

标签: pandas sorting date

我的格式为“创建于”列:

日期的格式为:'%d/%m/%Y'->日,月,年

obj = {'Created At': ['01/01/2017', '01/02/2017', '02/01/2017', 
                      '02/02/2017', 
                      '03/01/2017', '03/02/2017','04/01/2017' ], 
       'Text': [1, 70,14,17,84,76,32]}

df = pd.DataFrame(data=obj)

我做到了,但是没用:

df.sort_values(by='Created At', inplace=True)

enter image description here 似乎只排序日期而忽略月份。我该怎么办?

1 个答案:

答案 0 :(得分:1)

它确实对它进行了正确排序:您的日期在这里是字符串。字符串按字典顺序排序。因此,这意味着只有第一个字符相同时,它才会查看第二个字符,依此类推。

因此,您可能希望首先将列转换为日期时间对象:

df['Created At'] = pd.to_datetime(df['Created At'], format='%d/%m/%Y')

然后我们可以对数据框进行排序,并获得:

>>> df.sort_values(by='Created At', inplace=True)
>>> df
  Created At  Text
0 2017-01-01     1
2 2017-01-02    14
4 2017-01-03    84
6 2017-01-04    32
1 2017-02-01    70
3 2017-02-02    17
5 2017-02-03    76