我正在尝试使用 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')