我将此数据框作为输入:
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]
我想将此功能应用于整个数据帧。
你能帮帮我吗?
答案 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)
,但这与您的公式不符。