熊猫根据特定列计算百分比变化

时间:2020-08-13 01:29:22

标签: python pandas dataframe

我有一个带有一组数字的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=)中输入句点时,它只允许一个特定的数字,而不是基于特定列的值。有任何解决方法或其他方法可以做到这一点吗?

1 个答案:

答案 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