我有下面的熊貓資料框
| 顏色 | 方向 | 全部的 |
|---|---|---|
| -1.0 | 1.0 | 鈉 |
| 1.0 | 1.0 | 0 |
| 1.0 | 1.0 | 0 |
| 1.0 | 1.0 | 0 |
| -1.0 | 1.0 | 鈉 |
| 1.0 | -1.0 | 鈉 |
| 1.0 | 1.0 | 0 |
| 1.0 | 1.0 | 0 |
我正在嘗試根據以下邏輯更新總列。
如果 df['color'] == 1.0 和 df['direction'] == 1.0 那么 Total 應該是上一行的 Total 1。如果上一行的 Total 是 NaN,那么 0 1
注意:我試圖使用 df['Total'].shift() 1 讀取上一行總計,但它沒有用。
預期的資料幀。
| 顏色 | 方向 | 全部的 |
|---|---|---|
| -1.0 | 1.0 | 鈉 |
| 1.0 | 1.0 | 1 |
| 1.0 | 1.0 | 2 |
| 1.0 | 1.0 | 3 |
| -1.0 | 1.0 | 鈉 |
| 1.0 | -1.0 | 鈉 |
| 1.0 | 1.0 | 1 |
| 1.0 | 1.0 | 2 |
uj5u.com熱心網友回復:
您可以使用創建 sub-groupby 值cumsum,新的僅groupby使用顏色和方向并執行cumcount
df.loc[df.Total.notnull(),'Total'] = df.groupby([df['Total'].isna().cumsum(),df['color'],df['direction']]).cumcount() 1
df
Out[618]:
color direction Total
0 -1.0 1.0 NaN
1 1.0 1.0 1.0
2 1.0 1.0 2.0
3 1.0 1.0 3.0
4 -1.0 1.0 NaN
5 1.0 -1.0 NaN
6 1.0 1.0 1.0
7 1.0 1.0 2.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/439386.html
