使用 PeriodIndex 转换日期

Using PeriodIndex to convert dates

我正在尝试使用 PeriodIndex 来创建季度、日、年,但最近该功能由于某种原因停止工作。以下是一个最小示例:

 dict = [{'Date': '12/23/18'},
 {'Date': '12/24/18'},
 {'Date': '12/22/18'},
 {'Date': '12/24/18'},
 {'Date': '12/22/18'},
 {'Date': '12/24/18'}]
 df = pd.DataFrame(dict)
 df['Date2']      = pd.to_datetime(df['Date']).dt.date 
 df['year']        =    pd.PeriodIndex(df['Date2'], freq='A') 

我收到这个错误:

 TypeError: Incorrect dtype

这以前可以用,但我不确定为什么它不再起作用了。

Edt:我刚刚注意到上述命令在我的另一台计算机(Python 的相同版本,Win 10)上运行良好。

您可以将 .values 添加到您的约会对象中。所以 df['year'] = pd.PeriodIndex(df['Date2'].values, freq='A') 这行得通!

我运行在重新安装和升级后遇到同样的问题Pandas。 Pandas 的较新版本接受使用 .values 读取为 np.array 的日期字符串(正如 this GitHub post 的作者也发现的那样) .

谢谢,您的解决方案有效...但我需要这样做来避免 dtype 不一致...所以我写了

df['year'] = pd.PeriodIndex(pd.DatetimeIndex(df['year']), freq='A')