首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据帧按日期分组,按秒重新采样,用于每日更改价格

问数据帧按日期分组,按秒重新采样,用于每日更改价格
EN

Stack Overflow用户
提问于 2020-11-06 15:15:20
回答 1查看 65关注 0票数 1

我有如下数据。

​

​

我需要得到的百分比变化当前重采样(10秒)的最后价格与每日开盘价(00:00:00)如下所示。

有多个compid。

​

​

我做了类似下面的事情,但是df_price_curr_last得到了错误。

代码语言:javascript
复制
df_t is the data

group = ['compid', df_t['datetime'].date]
df_price_open = df_t.groupby(group)['price'].first().to_frame()
df_price_open

df_price_curr_last = df_t.groupby(group).resample('10S')['price'].last()
df_price_curr_last/df_price_open

下面是错误消息。

代码语言:javascript
复制
ValueError: Key 2020-11-06 00:00:00 not in level Index([2020-11-06, 2020-11-07], dtype='object')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-06 15:23:08

我认为您可以使用10S按日期分组,也可以按Grouper分组,聚合last,然后使用GroupBy.transform按第一级和第二级(compid和date)分组,以重复first值,因此可以将这两个Series分开

代码语言:javascript
复制
grouper = ['compid',  
            df_t['datetime'].dt.date.rename('date'),
            pd.Grouper(freq='10S', key='datetime')]
df_price_curr_last = df_t.groupby(grouper)['price'].last()
print (df_price_curr_last)


df_price_open = df_price_curr_last.groupby(level=[0,1]).transform('first')

a = df_price_curr_last/df_price_open
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64710294

复制
相关文章

相似问题

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