Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 排序日期值​;在数据帧中不';行不通_Pandas_Sorting_Date - Fatal编程技术网

Pandas 排序日期值​;在数据帧中不';行不通

Pandas 排序日期值​;在数据帧中不';行不通,pandas,sorting,date,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]}

我在以下表格中创建了“在”列:

日期的格式如下:
'%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)

它似乎只对日期进行排序,而不考虑月份。我该怎么办?

它确实能正确排序:您的日期在这里是字符串。字符串按字典顺序排序。这意味着只有当第一个字符相同时,它才会看到第二个字符,以此类推

因此,您可能希望首先将列转换为datetime对象:

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

不,它会正确排序:只有在两个日期相同的情况下,才会按月份排序。这是因为您的日期是字符串,它们是按字典顺序排序的。对不起,但我有一个问题:当您这样做时:format='%d/%m/%Y'结果是:年、月、日?例如:2017-02-02 2017-02-03@Gizelly:该格式指定如何将字符串解析为
datetime
对象。因此,一旦对其进行解析,datetime对象将表示为yyyy-mm-dd。这些不再是字符串,而是datetime对象。所以它使得计算日期等更加方便。哇!谢谢你教我一个新概念!我对词典学一无所知。你帮了我这么多!
>>> 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