我的資料框:
| f1 | f2 | 健康)狀況 |
|---|---|---|
| 2 | 4 | 1 |
| 1 | 3 | 0 |
| 5 | 7 | 0 |
| 9 | 11 | 0 |
| 4 | 9 | 1 |
| 9 | 16 | 1 |
| 16 | 25 | 0 |
我想得到f1-f2,當f1條件是第一個1,f2條件是最后一個0。例如,在前2行,我想得到2-3=-1。下一個示例是 4-25=-21。我不能通過將整個 f2 列移動 2 來進行固定減法,因為 1 和 0 之間的距離可能會像在資料幀中那樣變化。
uj5u.com熱心網友回復:
IIUC,您可以在從 0 到 1 的轉換時進行分組,然后取第一個 f1 和最后一個 f2,用它來計算 f1 - f2。
使用這種方法,組中的第一個值必須是 1,最后一個值是 0,(如果 0 和最后一行最終除外,但在這種情況下應該如何處理呢?)
group = df['Condition'].diff().eq(1).cumsum()
(df
.groupby(group)
.agg({'f1': 'first', 'f2': 'last'})
.eval('f1-f2')
)
變體:
group = df['Condition'].diff().eq(1).cumsum()
(df
.groupby(group)
.apply(lambda d: d['f1'].iloc[0]-d['f2'].iloc[-1])
)
輸出:
Condition
0 -1
1 -21
dtype: int64
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/468202.html
