首页 > 解决方案 > 如何仅参考第一列计算熊猫中的 pct_change

问题描述

我有一个数据框:

df = pd.DataFrame({
    "A": [1, 5, 2, 5, 6],
    "B": [-12, 23, 5, 22, 35],
    "C": [-32, 12, -10, 3, 2],
    "D": [2, 13, 6, 2, 8]
})

现在,我想计算百分比变化,axis=1但仅参考"A"所有列,例如"B"wrt "A""C"wrt等的百分比变化"A"

pct_change函数执行类似的工作,但它计算我不想要的连续行或列的百分比变化。

现在,我正在考虑通过可能的 for 循环并添加百分比或拆分数据框(如["A", "B"],["A", "C"]等)来实现这一点,然后pct_change分别应用于所有这些。

我认为后一种方法更好,但问题是,

有没有更好的方法可以做同样的工作?

标签: pythonpandas

解决方案


您可以在熊猫中使用除法功能,将所有列与列A

pct = df.divide(df["A"], axis="index") - 1
pct.head()

结果:

一个 C D
0 0.0 -13.000000 -33.000000 1.000000
1 0.0 3.600000 1.400000 1.600000
2 0.0 1.500000 -6.000000 2.000000
3 0.0 3.400000 -0.400000 -0.600000
4 0.0 4.833333 -0.666667 0.333333

推荐阅读