如何将列中的一行乘以pandas中的上一行?

时间:2018-02-11 22:45:48

标签: python pandas dataframe

假设我有一个数据框,其中第一列是回报率,第二列是总回报。我想在col2,第1行中获取一个凝视值(10)并将其乘以col1,第2行以创建col2,row2的新值。

见图片

我暂时解决了这个问题,一行一行地读了一遍并迭代了每一行,但我知道熊猫必须有更好的方法,但我还没有找到我一直在寻找的解决方案对于。大多数在线资源向您展示如何在整个数据帧中进行乘法运算。我想特别地将一行乘以另一个单元格中的值以创建下一行值。这在Excel中很容易,但我无法在Python中找到它

非常感谢任何帮助。对不起,如果格式不是最好的,我目前正在使用手机。

谢谢!

所以(row1, col2) = (row0, col2) * (row1, col1) + 20 (row2, col2) = (row1, col2) * (row2, col1) + 20     等...

row col1    col2
0   1       10
1   1.5     35
2   2       90
3   1.5     155

编辑:

我已经使用for循环解决了这个问题,如下所示,但我想知道如何解决这个问题“熊猫”#39; pandas'方式:

df.loc[0,"Total"] = 10   #sets initial value
for i in range(1, len(df)):    #loops to create each additional value
    df.loc[i,"Total"] = df.loc[i-1, "Total"] * df.loc[i, "Change"] +20

1 个答案:

答案 0 :(得分:0)

使用pd.Series.cumprod

import pandas as pd

df = pd.DataFrame({'Col_1': [1.0, 1.5, 2.0, 1.5]})

#    Col_1
# 0    1.0
# 1    1.5
# 2    2.0
# 3    1.5

df['Col_2'] = 10 * df['Col_1'].cumprod()

#    Col_1  Col_2
# 0    1.0   10.0
# 1    1.5   15.0
# 2    2.0   30.0
# 3    1.5   45.0