如何在DataFrame中仅提取指定列列表内的每行空值列名?
解决指定列空值捕获问题
直接修改你的代码,先筛选出需要检查的指定列再做空值判断,就能避免包含非目标列的结果:
columns_list = ['A','B','D'] df['X'] = df[columns_list].apply(lambda x: ','.join(x[x.isnull()].index), axis=1)
逻辑说明
原来的代码是对整个DataFrame执行apply,会遍历所有列的空值;现在先通过df[columns_list]切出你关心的列组成的子数据集,再在这个子集里检查空值并拼接列名,这样就只会保留columns_list里的空值列名了。
后续扩展(处理负值等场景)
如果之后要捕获负值,只需要修改lambda里的判断条件就行,比如同时检查空值和负值:
df['X'] = df[columns_list].apply(lambda x: ','.join(x[x.isnull() | (x < 0)].index), axis=1)
内容的提问来源于stack exchange,提问作者Middletr
相关产品推荐
相关产品推荐

