Python 坎普罗德大熊猫

Python 坎普罗德大熊猫,python,pandas,Python,Pandas,在数据帧中对另一个系列进行分组后,我试图将一列设置为一个系列的反向cumprod Attempt 1: temp_data["factor_price"] = temp_data["factor_price"].groupby("stock_key").cumprod()[::-1] Attempt 2: temp_data["factor_price"] = temp_data.groupby("stoc

在数据帧中对另一个系列进行分组后,我试图将一列设置为一个系列的反向cumprod

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()
temp_data["factor_price"] = temp_data.groupby("stock_key")["factor_price"].apply(lambda x: 
x[::-1].cumprod()[::-1]).to_list()
我已经做了很多研究,我想如果我在小组中循环,我可以做到,但是这是一个非常大的数据集,我希望代码尽可能简单。这有可能是一艘班轮吗


谢谢

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

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()
temp_data["factor_price"] = temp_data.groupby("stock_key")["factor_price"].apply(lambda x: 
x[::-1].cumprod()[::-1]).to_list()

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

temp_data[::-1].groupby('stock_key')['factor_price'].cumprod()[::-1]

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

您好,欢迎光临!通常建议在提问时添加一个可复制的示例,这样您就更有可能得到答案。尝试包含数据样本以及所需的输出。您的
第二次尝试实际上非常接近。您所需要做的只是将数据集本身反转为:)。检查我的答案是否相同。