在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
答案 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)