我有一列日期如下:10-apr-18。 当我转换df或对其进行任何处理时,pandas会按日期(第一个数字)自动对该列进行排序,因此它不是按时间顺序排列的。
我尝试使用to_datetime,但是由于月份是字符串,因此无法使用。
如何将其转换为日期或取消自动排序(我的原始数据已经按照正确的顺序排列了。)
答案 0 :(得分:2)
我建议使用to_datetime
和参数format
转换为日期时间:
df = pd.DataFrame({'dates':['10-may-18','10-apr-18']})
#also working for me
#df['dates'] = pd.to_datetime(df['dates'])
df['dates'] = pd.to_datetime(df['dates'], format='%d-%b-%y')
df = df.sort_values('dates')
df['dates'] = df['dates'].dt.strftime('%d-%B-%y')
print (df)
dates
1 10-April-18
0 10-May-18
df = pd.DataFrame({'dates':['10-may-18','10-apr-18']})
#also working for me
#df['dates'] = pd.to_datetime(df['dates'])
df['datetimes'] = pd.to_datetime(df['dates'], format='%d-%b-%y')
df = df.sort_values('datetimes')
df['full'] = df['datetimes'].dt.strftime('%d-%B-%y')
print (df)
dates datetimes full
1 10-apr-18 2018-04-10 10-April-18
0 10-may-18 2018-05-10 10-May-18
答案 1 :(得分:0)
df['dates'] = pd.to_datetime(df['dates'], format='%d-%b-%y').dt.strftime('%d/%B/%y')