簡體   English   中英

如果組中至少有一個值滿足條件,則為整個組分配虛擬值

[英]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, False1,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM