gpt4 book ai didi

python 对 df 中的行执行递归

转载 作者:行者123 更新时间:2023-12-01 02:21:33 28 4
gpt4 key购买 nike

我想用我的 df 执行以下计算。我已经在 Excel 中完成了此操作,但我不确定如何使用 Python 来完成此操作。计算如下

      initial|  recursion begins
Name | 1 | 2 | 3 | 4 ...
------------------------------------------------
A | A1 | A2 | A3 | A4 <--given
a | a1=0 | a2=c1*A2 | a3=c2*A3 | a4=c3*A4 <--calculation (1st cell always = 0)
c | c1=1 | c2=c1-a2 | c3=c2-a3 | c4=c3-a4 <--calculation (1st cell always 1)

这是我的例子:

df

Name    1    2     3    4     5
----------------------------------
A 0 .125 .286 .25 .333
B 0 0 0 .5 -

输出将是:

Name    1    2     3     4    5
----------------------------------
A 0 .125 .286 .25 .333
Ax 0 .125 .25 .156 .156
Ay 1 .875 .625 .469 .313
B 0 .1 0 .25 -
Bx 0 .1 0 .225 -
By 1 .9 .9 .675 -

谢谢!

最佳答案

让我解释一下。

a2=c1*A2;c2=c1-a2,则 c2=c1-a2=c1-c1*A2=c1(1-A2)

c3 应该是 c3=c2(1-A3)=c1(1-A2)(1-A3),即 (1-df).cumprod(1) ,来自

df=df.set_index('Name') 
df1=(1-df).cumprod(1)
df2=df1.shift(1,axis=1).mul(df)

pd.concat([df,df1,df2],keys=['','x','y']).fillna({'1':0})


Out[769]:
1 2 3 4 5
Name
A 0.0 0.125 0.28600 0.250000 0.333000
B 0.0 0.000 0.00000 0.500000 NaN
x A 1.0 0.875 0.62475 0.468562 0.312531
B 1.0 1.000 1.00000 0.500000 NaN
y A 0.0 0.125 0.25025 0.156187 0.156031
B 0.0 0.000 0.00000 0.500000 NaN

关于python 对 df 中的行执行递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47914178/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com