我正在尝试使用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)。
答案 0 :(得分:3)
您可以将.values
添加到日期中。所以df['year'] = pd.PeriodIndex(df['Date2'].values, freq='A')
这将起作用!
重新安装和升级熊猫后,我遇到了同样的问题。较新版本的Pandas接受日期字符串,该日期字符串使用.values
作为np.array读取(也发现了this GitHub帖子的作者)。
答案 1 :(得分:0)
谢谢,您的解决方案有效...但是我需要这样做以避免dtype不一致...所以我写了
df['year'] = pd.PeriodIndex(pd.DatetimeIndex(df['year']), freq='A')