pandas 创建一个新列,该列显示基于另一列值的百分比变化

ttisahbt  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(127)

这是我的dataframe:

df = pd.DataFrame({'a': [10, 20, 50]})

这是我想要的输出:

a      b      
0  10    100
1  20    20  
2  50    10

我有一个初始值1000。然后我想创建列bb的第一行是1000的10%,也就是100。第二行是我们之前得到的100的20%。最后一行是20的50%。
我试过这个代码,但它不工作:

df = df.reset_index(drop=True)
df.loc[0, 'b'] = 1000 * (df.a.iloc[0] / 100)
df['b'] = (df.a / 100) * df.b.shift(1)
j9per5c4

j9per5c41#

你在找cumprod吗?

(df['a'] / 100).cumprod() * 1000

0    100.0
1     20.0
2     10.0
Name: a, dtype: float64

说明:首先除以100,因为我们处理的是百分比。然后求出该系列的累积乘积。最后乘以1000,这是你的起始值。

df['b'] = (df['a'] / 100).cumprod() * 1000
df
    a      b
0  10  100.0
1  20   20.0
2  50   10.0

相关问题