具体来说,我想为一个虚拟变量确定某个组是否缺少值。 我的数据框如下所示:
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
谢谢
答案 0 :(得分:2)
您可以使用NaNs
检查isna
,groupby
id
并使用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
答案 1 :(得分:2)
将Series.isin
用于测试id
,如果缺少cash
值,则将布尔掩码转换为整数,以将映射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