假设我有一个数据框,其中第一列是回报率,第二列是总回报。我想在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
答案 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