我的panda df.index格式如下。
这是一串日/月/年,所以第一项是05Sep2017等:
应用
df.index = pd.to_datetime(df.index)
到上面,将其转换为:
似乎正在发生的事情是第一个条目正在切换日期和月份。相反,最后一个条目(日期大于12)将被正确转换。
我尝试通过将索引转换为列并应用:
来切换月日df['date'] = df.index
df['date'].apply(lambda x: dt.datetime.strftime(x, '%Y-%d-%m'))
以及:
df['date'].apply(lambda x: dt.datetime.strftime(x, '%Y-%m-%d'))
但无济于事。 如何将索引转换为datetime,其中所有条目都是日/月/年?
答案 0 :(得分:0)
pandas是date
s YY-MM-DD
的默认格式。
df = df.set_index('date_col')
df.index = pd.to_datetime(df.index)
print (df)
val
2017-05-09 4
2017-07-09 8
2017-10-18 2
print (df.index)
DatetimeIndex(['2017-05-09', '2017-07-09', '2017-10-18'], dtype='datetime64[ns]', freq=None)
您需要strftime
,但丢失了日期时间,因为获取字符串:
df.index = pd.to_datetime(df.index).strftime('%Y-%d-%m')
print (df.index)
Index(['2017-09-05', '2017-09-07', '2017-18-10'], dtype='object')
df.index = pd.to_datetime(df.index).strftime('%d-%b-%Y')
print (df)
val
09-May-2017 4
09-Jul-2017 8
18-Oct-2017 2