我有一个带有一组数字的DataFrame,我想计算百分比变化。 df是
2 3
0 1 1
1 2 2
2 3 3
3 4 4
4 5 5
5 6 6
我一直使用的命令是df.per_change(periods=)
,在这里我希望句点是列名,分别是2和3。所需的输出看起来像这样。
2 3
0 NaN NaN
1 NaN NaN
2 2.000000 NaN
3 1.000000 3
4 0.666667 1.5
5 0.500000 1
我遇到的主要问题是,当我尝试在df.pct_change(periods=)
中输入句点时,它只允许一个特定的数字,而不是基于特定列的值。有任何解决方法或其他方法可以做到这一点吗?
答案 0 :(得分:2)
在循环后,我们可以尝试使用concat
newdf=pd.concat([df[x].pct_change(periods = int(x)) for x in df.columns],axis=1)
Out[47]:
2 3
0 NaN NaN
1 NaN NaN
2 2.000000 NaN
3 1.000000 3.0
4 0.666667 1.5
5 0.500000 1.0
或
newdf = df.apply(lambda x : x.pct_change(periods = int(x.name)), axis=0 )
Out[64]:
2 3
0 NaN NaN
1 NaN NaN
2 2.000000 NaN
3 1.000000 3.0
4 0.666667 1.5
5 0.500000 1.0