Python Pandas 删除含NA行时保留符合特定条件的NA行实现方法
带豁免规则的Pandas空值行删除实现
实现逻辑
可保留的行需要满足以下两个条件的任意一个:
- 整行无任何NA值,符合通用的空值删除要求
- 同时满足全部四个豁免规则:
Col1 == 3、Col2 == "A"、Col3为NA、Col4不为NA
核心代码
import pandas as pd # 豁免条件判断 exempt = ( (df['Col 1'] == 3) & (df['Col 2'] == 'A') & (df['Col 3'].isna()) & (df['Col 4'].notna()) ) # 无空值行判断 no_na = ~df.isna().any(axis=1) # 过滤出符合要求的行 result_df = df[exempt | no_na]
注意事项
- 代码中的列名需要和你实际DataFrame的列名保持一致,如果你的列名是无空格的
Col1/Col2,修改对应引号内的字段即可 - 该逻辑会自动排除特殊边界情况:哪怕
Col1==3且Col2==A,只要Col4为NA也不会被纳入豁免范围,会直接被过滤
内容的提问来源于stack exchange,提问作者Oludhe
相关产品推荐
相关产品推荐

