我們有一個資料框 df,它有兩列,如下所示。變數 A 有兩個級別,1 和 2。變數 B 有三個級別 YES、NO 和 OTHER。我們想用變數 C 匯出另一個資料框 df2,如果變數 A 中的任何級別至少存在一個“是”,則取值為 “1” ,否則為“0”。
df
A B
1 YES
1 YES
1 OTHER
1 NO
1 YES
1 NO
2 YES
2 YES
2 YES
2 NO
2 YES
3 OTHER
3 NO
3 NO
3 NO
df2
A C
1 1
2 1
3 0
uj5u.com熱心網友回復:
使用groupby:
>>> df['B'].eq('YES').groupby(df['A']).any().astype(int).reset_index(name='C')
A C
0 1 1
1 2 1
2 3 0
uj5u.com熱心網友回復:
一種選擇是使用 defaultdict 將列轉換B為數字,然后按分組A以獲取最大值:
from collections import defaultdict
d = defaultdict(int)
d['YES'] = 1
df.assign(B = df.B.map(d)).groupby('A', as_index = False).agg(C=('B', 'max'))
A C
0 1 1
1 2 1
2 3 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/487631.html
