熊猫:将int64岁转换为日期时间仅仅是年份

时间:2017-11-28 12:31:34

标签: python pandas datetime dataframe

我有一个如下所示的数据框索引:

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)

3 个答案:

答案 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,因为如果没有DatetimeIndexmonth 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