如何找到数据框中 X 列的百分比变化?

how do I find the percent change from column X in dataframe?

我有一个 49x10 的数据框,我需要找到每个索引项到该行中特定列的每个索引项的百分比变化。

这是 5x10 的数据帧示例。

        -15         -10         -5          -2          -1          0           1           2           5           10          15
symbol                                          
ADS     80.098282   77.709549   72.130524   69.178314   72.947937   74.548950   75.364349   77.907074   79.691963   73.998260   67.965523
BEPC    49.635834   48.256989   45.957493   45.627144   47.968739   49.610779   48.056187   49.659355   56.013733   56.412094   59.579567
CBSH    70.400002   69.800003   70.533333   66.476189   65.250000   66.910004   66.180000   68.809998   68.089996   68.839996   68.110001
CIG     2.014711    2.097131    2.225340    2.371864    2.280286    2.089544    2.070374    2.127884    2.127884    2.204564    2.377095
CPE     12.200000   13.100000   11.800000   11.100000   10.400000   10.690000   10.050000   10.040000   8.340000    6.920000    6.630000

基本上,对于第 0 列,我试图找到以该日期为中心的百分比变化。 我已经完成了:

for col in df.columns:
    df[col] = (df[col] - df['0'])/df['0']*100

但是,returns 数据框如下所示:

        -15         -10         -5          -2          -1          0   1   2   5   10  15
symbol                                          
ADS     7.443876    4.239629    -3.244079   -7.204174   -2.147600   0.0 inf inf inf inf inf
BEPC    0.050503    -2.728823   -7.363896   -8.029777   -3.309846   0.0 inf inf inf inf inf
CBSH    5.215958    4.319234    5.415228    -0.648356   -2.480950   0.0 inf inf inf inf inf
CIG     -3.581304   0.363103    6.498839    13.511108   9.128440    0.0 inf inf inf inf inf
CPE     14.125353   22.544442   10.383542   3.835368    -2.712815   0.0 inf inf inf inf inf

脚本正在修改 df['0'],但我不确定如何找到解决方法。预期结果将是 df['0'] 的百分比变化,因为它在 0 位置迭代之前发生了什么。

如有任何帮助,我们将不胜感激。

由于“0”列是您的参考,因此您不应更改它(因为它与自身的变化始终为 0%):

for col in df.columns:
    if col == '0':
        continue   # Skip the reference column
    df[col] = (df[col] - df['0'])/df['0']*100

@nonDucor 的回答发现了错误,但我会谨慎地将百分比与绝对值混合使用。 (所有列均以百分比表示,但您保持不变的列“0”除外)。要完成答案,您应该在末尾更新参考列的百分比。

# Compute percentages for all non-reference columns
for col in df.columns.drop('0'):
    df[col] = (df[col] - df['0'])/df['0']*100

# Update the reference columne
df['0'] = 0.0