我有一个如下所示的数据框索引:
df.index
Int64Index([1992, 1993, 1994, 1995], dtype='int64')
但希望它转换为日期时间,同时仅显示年份,从而保留上述年度格式。
我试过了: Pandas: how to convert an index of int64 years to datetime
import pandas as pd
df.index = pd.to_datetime(df.index, format='%Y')
但是这给了我:
DatetimeIndex(['1992-01-01', '1993-01-01', '1994-01-01', '1995-01-01'], dtype='datetime64[ns]', freq=None)
相反,有更好的方法可以得到以下内容:
DatetimeIndex(['1992', '1993', '1994', '1995'], dtype='datetime64)
答案 0 :(得分:3)
PeriodIndex怎么办?
In [131]: i = pd.Int64Index([1992, 1993, 1994, 1995], dtype='int64')
In [132]: pd.PeriodIndex(i, freq='A')
Out[132]: PeriodIndex(['1992', '1993', '1994', '1995'], dtype='period[A-DEC]', freq='A-DEC')
答案 1 :(得分:2)
使用PeriodIndex
,因为如果没有DatetimeIndex
和month
s,则无法创建day
:
idx = pd.Int64Index([1992, 1993, 1994, 1995])
print (idx)
Int64Index([1992, 1993, 1994, 1995], dtype='int64')
per = pd.PeriodIndex(idx, freq='A')
print (per)
PeriodIndex(['1992', '1993', '1994', '1995'], dtype='period[A-DEC]', freq='A-DEC')
答案 2 :(得分:0)
我发现这很有用
df.index = pd.to_datetime(df.index, format='%Y').year