2 回答

TA貢獻1752條經(jīng)驗 獲得超4個贊
用于Series.isna
創(chuàng)建布爾掩碼,然后Series.groupby
在此掩碼上使用并聚合,all
最后使用此掩碼m
過濾nan
和not_nan
值:
m = df['variable'].isna().groupby(df['name']).all()
nan, not_nan = m[m].index.tolist(), m[~m].index.tolist()
結果:
['z'] # nan
['x', 'y'] # not_nan

TA貢獻1842條經(jīng)驗 獲得超22個贊
這是使用自定義聚合函數(shù)的另一種方法:
agg = df.groupby('name').agg(lambda x: all(np.isnan(x))).reset_index()
這會生成一個聚合數(shù)據(jù)框:
name variable
0 x False
1 y False
2 z True
False然后你就可以得到是或的名字True
list_names_nan = agg.loc[agg['variable']==True]['name'].tolist()
list_names_not_nan = agg.loc[agg['variable']==False]['name'].tolist()
添加回答
舉報