我有一個df這樣的資料框:
symbol P Q V ...
0 00001 10.9 100 100 ...
1 00001 11.0 100 200 ...
2 00001 11.0 100 200 ...
3 00002 12.1 -100 -100 ...
... ... ... ...
46 00004 6.9 300 300 ...
47 00004 7.0 -200 100 ...
48 00004 8.8 100 200 ...
49 00004 8.8 100 200 ...
我也有一個索引串列idx=[2, ... 49]。我想更改索引在此串列中的行的值。例如,我想設定
df.loc[i,'Q'] = df.loc[i-1,'V']
但是,這種命令會引發一些錯誤,因為它需要特定的索引而不是索引串列。我嘗試使用這樣的 for 回圈:
for i in idx:
df.at[i, "Q"] = df.at[i-1, "V"]
雖然它有效,但如果資料集很大,由于 for 回圈,速度會變慢。是否有任何可以根據索引串列為多行列分配新值的 pandas 命令,如上所示?
uj5u.com熱心網友回復:
如果您轉換idx為 numpy 陣列,它可以作業:
idx = [2, 3, 48, 49]
idx = np.array(idx)
# Don't forget .values to ignore index
df.loc[idx, 'Q'] = df.loc[idx-1, 'V'].values
輸出:
>>> df
symbol P Q V
0 1 10.9 100 100
1 1 11.0 100 200
2 1 11.0 200 200
3 2 12.1 200 -100
46 4 6.9 300 300
47 4 7.0 -200 100
48 4 8.8 100 200
49 4 8.8 200 200
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/428700.html
