在pandas中应用datetime格式进行排序

时间:2015-10-31 01:00:47

标签: python sorting datetime pandas

在Pandas中,我的列格式为日期:%Y /%m /%d(例如2015/10/31)。我想将此格式更改为另一种格式,例如:%d-%m-%y(例如31-10-15)。

将列转换为正确的对象以供以后排序:

df['Date'] = pd.to_datetime(df['Date'])

应用strptime:

df['Date'] = df['Date'].apply(lambda x:
    datetime.strptime(x,'%d-%m-%y'))

TypeError: must be str, not Timestamp

另外,奇怪的是,如果日期将pandas数据框输入除默认ISO标准之外的任何内容,则排序时会出现奇怪的结果。如格式不一致和/或排序不正确:

0  2015-01-31
1  2016-15-01

1 个答案:

答案 0 :(得分:0)

解决问题的一部分:

  

我想将此格式更改为另一种格式,例如:%d-%m-%y(例如31-10-15)。

     

...如果日期在除了默认ISO标准之外的任何内容中输入pandas数据帧,那么在排序时会出现奇怪的结果。如格式不一致和/或排序不正确

实际上非常简单。熊猫有问题,因为它认为dd-mm-yy格式是国际性的,必须输入额外的第一个参数才能正确对待它:

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

也可能需要这个(目前可用于解析数据但不显示):

pd.set_option('display.date_dayfirst', True)