[英]Assign dummy value to whole group if at least one value in the group satisfies condition
具體來說,我想要一個虛擬變量,用於確定某個組是否存在缺失值。 我的數據框如下所示:
id cash dummy_missing
1 5 0
1 5 0
1 5 0
2 2 0
2 NaN 1
它應該是這樣的:
id cash dummy_missing
1 5 0
1 6 0
1 7 0
2 2 1
2 NaN 1
謝謝
您可以使用isna
檢查NaNs
,通過id
groupby
並使用any
轉換:
df['dummy_missing'] = df.cash.isna().groupby(df['id']).transform('any').view('i1')
print(df)
id cash dummy_missing
0 1 5.0 0
1 1 5.0 0
2 1 5.0 0
3 2 2.0 1
4 2 NaN 1
如果缺少cash
值,則使用Series.isin
作為測試id
,最后將布爾掩碼轉換為整數以映射True, False
到1,0
:
df['dummy_missing'] = df['id'].isin(df.loc[df.cash.isna(), 'id']).astype(int)
print (df)
id cash dummy_missing
0 1 5.0 0
1 1 5.0 0
2 1 5.0 0
3 2 2.0 1
4 2 NaN 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.