gpt4 book ai didi

python - Pandas 日期时间索引类型错误

转载 作者:行者123 更新时间:2023-12-03 16:47:57 26 4
gpt4 key购买 nike

我试图做这里所做的事情:Pandas resampling with custom volume weighted aggregation但是我的索引遇到了类型错误。
我有这样的数据:

                         Dates       P   Q
0 2020-09-07 01:20:24.738686 7175.0 21
1 2020-09-07 01:45:27.540590 7150.0 7
2 2020-09-07 03:48:49.120607 7125.0 4
3 2020-09-07 04:45:50.972042 7125.0 6
4 2020-09-07 05:36:23.139612 7125.0 2
我使用 print(df.dtypes) 检查类型返回:
Dates    datetime64[ns]
P float64
Q int64
dtype: object
然后我将索引设置为日期使用 df = df.set_index(pd.DatetimeIndex(df['Dates']))然后我删除日期列以便使用 df = df.drop(['Dates'], axis=1) 更容易阅读
这给了我
                                 P   Q
Dates
2020-09-07 01:20:24.738686 7175.0 21
2020-09-07 01:45:27.540590 7150.0 7
2020-09-07 03:48:49.120607 7125.0 4
2020-09-07 04:45:50.972042 7125.0 6
2020-09-07 05:36:23.139612 7125.0 2
然后我尝试重新采样:
def vwap(data):
price = data.P
quantity = data.Q

top = sum(price * quantity)
bottom = sum(quantity)

return top / bottom

df2 = df.resample("5h",axis=1).apply(vwap)
这会导致错误 TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'查看具有相似名称的其他堆栈溢出条目,它们的问题主要是日期时间仅看起来像日期时间,但实际上并未格式化为日期时间。这不是这里的情况,因为我们之前可以看到 Dates 列的类型为 datetime64[ns]此外,如果我这样做 print(df.index.dtype) ,我得到:
datetime64[ns]
有什么建议?如果有帮助,很高兴澄清任何事情或提供更多代码。

最佳答案

删除 axis=1参数和使用 pd.Grouper作品:

df.groupby(pd.Grouper(freq="5h")).apply(vwap)
Dates
2020-09-07 00:00:00 7157.236842
2020-09-07 05:00:00 7125.000000
dtype: float64
如果您想要具有信息性列名称的数据框,请使用 reset_index :
df.groupby(pd.Grouper(freq="5h")).apply(vwap).reset_index(name="vwap")
                Dates         vwap
0 2020-09-07 00:00:00 7157.236842
1 2020-09-07 05:00:00 7125.000000

关于python - Pandas 日期时间索引类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63967719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com