首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas DatetimeIndex TypeError

Pandas DatetimeIndex TypeError
EN

Stack Overflow用户
提问于 2020-09-19 18:27:56
回答 1查看 166关注 0票数 5

我尝试做这里所做的事情:Pandas resampling with custom volume weighted aggregation,但是我的索引命中了一个TypeError。

我有如下数据:

代码语言:javascript
复制
                         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)检查类型,它返回:

代码语言:javascript
复制
Dates    datetime64[ns]
P               float64
Q                 int64
dtype: object

然后,我使用df = df.set_index(pd.DatetimeIndex(df['Dates']))将索引设置为日期

然后,我删除了Dates列,以便于使用df = df.drop(['Dates'], axis=1)读取

这给了我

代码语言:javascript
复制
                                 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

然后,我尝试重新采样:

代码语言:javascript
复制
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'

查看其他具有类似名称的堆栈溢出条目,它们的问题主要是datetime只看起来像一个datetime,但实际上并没有格式化为datetime。这里的情况并非如此,因为我们可以在前面看到日期列的类型为datetime64[ns]

此外,如果我使用print(df.index.dtype),我会得到:

代码语言:javascript
复制
datetime64[ns]

有什么建议吗?乐于澄清任何事情或提供更多的代码,如果这是有帮助的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-19 19:19:01

删除axis=1参数并使用pd.Grouper是可行的:

代码语言:javascript
复制
df.groupby(pd.Grouper(freq="5h")).apply(vwap)
代码语言:javascript
复制
Dates
2020-09-07 00:00:00    7157.236842
2020-09-07 05:00:00    7125.000000
dtype: float64

如果需要具有信息性列名的数据帧,请使用reset_index

代码语言:javascript
复制
df.groupby(pd.Grouper(freq="5h")).apply(vwap).reset_index(name="vwap")
代码语言:javascript
复制
                Dates         vwap
0 2020-09-07 00:00:00  7157.236842
1 2020-09-07 05:00:00  7125.000000
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63967719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档