Pandas数据帧:将行乘以前一行

时间:2017-09-10 10:59:52

标签: python pandas

我将此数据框作为输入:

                       df1      
                A       B      C
20/08/17    0.0000% 0.0000% 0.0000%
21/08/17    0.0000% 0.0000% 0.0000%
22/08/17    1.0000% 1.0000% 1.0000%
23/08/17    0.0000% 0.0000% 0.0000%
24/08/17    1.9417% 0.9709% 0.9709%
25/08/17    1.8692% 0.9346% 0.9346%

我正在尝试将以下数据帧作为输出:

                      df2       
                A       B       C
20/08/17    0.0000% 0.0000% 0.0000%
21/08/17    0.0000% 0.0000% 0.0000%
22/08/17    1.0000% 1.0000% 1.0000%
23/08/17    1.0000% 1.0000% 1.0000%
24/08/17    2.9806% 2.0097% 2.0097%
25/08/17    4.9612% 3.0194% 3.0194%

其中值

df2['A'][1]=df2['A'][0]*(1+df1.sum(axis=1))+df1['A'][1]

我想将此功能应用于整个数据帧。

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

这应该按预期工作:

df2 = df.copy()
for i in range(df3.index.size):
    if not i:
        continue
    df2.iloc[i] = (df2.iloc[i - 1] * (1 + df.iloc[i].sum())) + df.iloc[i]

您在评论中提到您并不希望"循环播放它,但我无法在没有for循环的情况下如何做同样的事情。 主要限制是您希望在计算df2[i - 1]时使用新计算的df2[i]中的数据。

如果没有此要求(然后使用现有的df[i - 1]计算df2[i]),则会提供df + df.shift().fillna(0).mul(1 + df.sum(axis=1), axis=0),但这与您的公式不符。