使用 pandas 计算两个特定行之间的百分比变化

Sil*_*ser 2 python dataframe pandas

我有一个像这样的数据框:

         AAPL      MSFT
May       200       120
Jun       190       122
Jul       170       127
Aug       180       135
Run Code Online (Sandbox Code Playgroud)

我想添加一个索引名称为“percChane”的新行,用于计算第一行和最后一行之间的 perc 变化(在本例中为 5 月和 8 月)。

             AAPL      MSFT
    May       200       120
    Jun       190       122
    Jul       170       127
    Aug       180       135
   percChng   -10      12.5
Run Code Online (Sandbox Code Playgroud)

可以使用 df.pct_change() 来完成吗?如果没有,最有效的方法是什么?它始终需要是第一行和最后一行。

cs9*_*s95 5

您可以选择要计算百分比变化的行,然后自己计算:

s, e = df.iloc[0], df.iloc[-1]
df = df.append(((e - s) / s * 100).rename('percChng'))
df
           AAPL   MSFT
May       200.0  120.0
Jun       190.0  122.0
Jul       170.0  127.0
Aug       180.0  135.0
percChng  -10.0   12.5
Run Code Online (Sandbox Code Playgroud)

或者,您可以致电pct_change让 pandas 为您做这件事:

df = df.append(df.iloc[[0, -1]].pct_change().iloc[-1].mul(100).rename('percChng'))
df
           AAPL   MSFT
May       200.0  120.0
Jun       190.0  122.0
Jul       170.0  127.0
Aug       180.0  135.0
percChng  -10.0   12.5
Run Code Online (Sandbox Code Playgroud)