使用周期索引转换日期



我正在尝试使用 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 接受使用 .values 作为 np.array 读取的日期字符串(正如这篇 GitHub 帖子的作者也发现的那样(。

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

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

最新更新