我有一個資料集,我想將某些值添加到某一行并重新計算其他特定行的值。
例如。對于'aa' q222,我想將值500添加到 'pwr' 列。這將隨后更改 q222 的 'avail' 值。
資料
id date pwr used avail
aa q122 1000 727.2 272.8
aa q222 1000 975.7 24.3
aa q322 1000 1092.7 -92.7
aa q422 1000 1196.7 -196.7
bb q122 1000 0 1000
bb q222 1000 117.3 882.7
想要的
id date pwr used avail
aa q122 1000 727.2 272.8
aa q222 1500 975.7 524.3
aa q322 1500 1092.7 407.3
aa q422 1500 1196.7 303.3
bb q122 1000 0 1000
bb q222 1100 117.3 982.7
邏輯
- 將500添加到aa q222以后的“pwr”列
- 在bb q222以后的“pwr”列中添加了100
正在做
我想我可以索引該行,但不確定如何做到這一點。我還在研究。任何建議表示贊賞。
df.loc[df.index['q222], 'aa'] = 500
uj5u.com熱心網友回復:
開始了:
# row q222 onward, within `id` group
mask = df['date'].eq('q222').groupby(df['id']).cumsum() >= 1
df.loc[mask, 'avail'] = df['id'].map({'aa':500, 'bb':100})
輸出:
id date pwr used avail
0 aa q122 1000 727.2 272.8
1 aa q222 1000 975.7 524.3
2 aa q322 1000 1092.7 407.3
3 aa q422 1000 1196.7 303.3
4 bb q122 1000 0.0 1000.0
5 bb q222 1000 117.3 982.7
請注意,如果您date可以按照名稱進行訂購,并且向前反映訂購,則mask可以簡單地為:
mask = df['date'] >= 'q222'
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/337998.html
上一篇:SeleniumWebDriverException當self.driver_.get("http://www.stockbroking.com.my")
