熊猫指数日期时间转换月和日
问题描述:
我有一个熊猫df.index在下面的格式。熊猫指数日期时间转换月和日
这是日/月/年的串,所以第一项是05Sep2017等:
- 17年5月9日#05Sep2017
- 17年7月9日#07Sep2017
- .. 。
- 18/10/17#18Oct2017
应用
df.index = pd.to_datetime(df.index)
以上,将其转换为:
- 2017年5月9日#09May2017
- 2017年7月9日#09Jul2017
- ...
- 2017年10月18日#18Oct2017
似乎正在发生的事情是,第一个条目正在切换日和月。而最后一次输入,如果日期大于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,其中所有条目均为日/月/年?
答
熊猫的默认格式为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
以上收益率: '索引' 对象有没有属性 '的strftime'。 –
也许需要首先'df = df.set_index('date_col')' – jezrael
最后一行是另一种选择,所以使用'df.index = pd.to_datetime(df.index).strftime('%Y-%d-%m' )'或'df.index = pd.to_datetime(df.index).strftime('%d-%b-%Y')' – jezrael