所以,我有一个df
这样的
ID,A,B,C,D,E,F,G
1,123,30,3G,1,123,30,3G
2,456,40,4G,NaN,NaN,NaN,4G
3,789,35,5G,NaN,NaN,NaN,NaN
我也有一个列表,其中包含df标头列表的子集,像这样,
header_list = ["D","E","F","G"]
现在,我想从df
header_list中所有CONTAINS Null值中获取所有记录。
预期产量:
ID,A,B,C,D,E,F,G
3,789,35,5G,NaN,NaN,NaN,NaN
我尝试过,new_df = df[df[header_list].isnull()]
但这会抛出error, ValueError: Boolean array expected for the condition, not float64
我知道我可以做这样的事情
new_df = df[(df['D'].isnull()) & (df['E'].isnull()) & (df['F'].isnull()) & (df['G'].isnull())]
但是我不想这样硬编码。那么有没有更好的方法呢?
您可以使用以下方法对此进行过滤:
df[df[header_list].isnull().all(axis=1)]
因此,我们检查一行是否包含其中.all()
value为的值.isnull()
。
对于给定的样本输入,这给出了预期的输出:
>>> df[df[header_list].isnull().all(axis=1)]
A B C D E F G
3 789 35 5G NaN NaN NaN NaN
在.all(axis=1)
[熊猫-DOC]因此,将返回True
的行,因为该行的所有列True
,和False
其他。因此,对于给定的样本输入,我们得到:
>>> df[header_list]
D E F G
1 1.0 123.0 30.0 3G
2 NaN NaN NaN 4G
3 NaN NaN NaN NaN
>>> df[header_list].isnull()
D E F G
1 False False False False
2 True True True False
3 True True True True
>>> df[header_list].isnull().all(axis=1)
1 False
2 False
3 True
dtype: bool
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句