首页 > 解决方案 > 为数据框寻找 cumprod?

问题描述

我有一个(三角形)数据框,即:DF1:

2016A   NaN NaN  2.5  6.5  NaN  NaN
2016B   NaN 5.32 6.3  NaN  NaN  NaN
2017A   NaN 9.4  5.6  NaN  NaN  NaN
2018B   4.5 NaN  5.6  NaN  NaN  NaN
2018C   NaN 6.5  4.3  NaN  NaN  NaN
2019A   5.3 NaN  NaN  NaN  NaN  NaN

我必须找到这个数据框的cumprod

我试过这段代码:

df2= df1.iloc[:, ::-1].cumprod(axis=1).iloc[:, ::-1]

但结果与 df​​1 相同

结果应如下所示:

2016A   NaN NaN   16.25  6.5  NaN   NaN
2016B   NaN 33.51  6.3   NaN  NaN   NaN
2017A   NaN 52.64  5.6   NaN  NaN   NaN
2018B   25.2 NaN   5.6   NaN  NaN   NaN
2018C   NaN 27.95  4.3   NaN  NaN   NaN
2019A   5.3  NaN   NaN   NaN  NaN   NaN

感谢您的时间 :)

标签: pythonpandasdataframenumpy

解决方案


您的代码应该运行良好,但需要做一件事。这是不对第一列进行计算:

>>> df.set_index(df.iloc[:, 0].name).iloc[:, ::-1].cumprod(axis=1).iloc[:, ::-1].reset_index()
       0     1       2      3    4   5   6
0  2016A   NaN     NaN  16.25  6.5 NaN NaN
1  2016B   NaN  33.516   6.30  NaN NaN NaN
2  2017A   NaN  52.640   5.60  NaN NaN NaN
3  2018B  25.2     NaN   5.60  NaN NaN NaN
4  2018C   NaN  27.950   4.30  NaN NaN NaN
5  2019A   5.3     NaN    NaN  NaN NaN NaN
>>> 

推荐阅读