首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas Reverse Groupby Cumprod

Pandas Reverse Groupby Cumprod
EN

Stack Overflow用户
提问于 2021-01-16 03:19:38
回答 2查看 110关注 0票数 1

在对数据框中的另一系列进行分组后,我尝试将列设置为该系列的反向累积量。

代码语言:javascript
复制
Attempt 1:
temp_data["factor_price"] = temp_data["factor_price"].groupby("stock_key").cumprod()[::-1]
Attempt 2:
temp_data["factor_price"] = temp_data.groupby("stock_key")["factor_price"].cumprod()[::-1]
Attempt 3: 
temp_data["factor_price"] = temp_data.groupby("stock_key")["factor_price"][::-1].cumprod()
代码语言:javascript
复制
input: temp_data = pd.DataFrame([x, x, x, y, y, y], [1, 2, 3, 0, 1, 2], columns=[
"stock_key", "factor_price"])

Output: Pd.Series(6, 6, 3, 0, 2, 2)

我已经研究了很多,我认为如果我循环遍历这些组,我可以做到这一点,但这是一个异常庞大的数据集,我希望代码尽可能简单。有没有可能这只是一条直线?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-01-16 05:13:27

因此,我需要应用一个自定义函数来执行cumprod,然后将所有内容转换为列表,因为与原始数据框的索引不兼容。

代码语言:javascript
复制
temp_data["factor_price"] = temp_data.groupby("stock_key")["factor_price"].apply(lambda x: 
x[::-1].cumprod()[::-1]).to_list()
票数 1
EN

Stack Overflow用户

发布于 2021-01-16 05:25:55

您可以在不使用lambda函数的情况下执行此操作,因为-

代码语言:javascript
复制
temp_data[::-1].groupby('stock_key')['factor_price'].cumprod()[::-1]

第一个[::-1]颠倒了预期cumprod()的dataset的行顺序,第二个颠倒了数据集的行顺序,以恢复索引的原始顺序。

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

https://stackoverflow.com/questions/65742335

复制
相关文章

相似问题

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