我有一個 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
但是,這會回傳一個如下所示的資料框:
-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 位置迭代之前發生的那樣。
任何幫助,將不勝感激。
uj5u.com熱心網友回復:
@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
uj5u.com熱心網友回復:
由于列 '0' 是您的參考,因此您不應更改它(因為它與自身的變化始終為 0%):
for col in df.columns:
if col == '0':
continue # Skip the reference column
df[col] = (df[col] - df['0'])/df['0']*100
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/426270.html
