首页 > 解决方案 > 在熊猫数据框中按条件过滤 nans

问题描述

我有一个这样的数据框:

   COL1  COL2
0     1     2
1     1     NaN
2     2     6
3     2     8
4     3     10
5     3     NaN
6.    4     NaN

如您所见,Col1 中有重复值,我想要一个像这样的数据框:

   COL1  COL2
0     1     2
1     2     6
2     2     8
3     3     10
4     4     NaN

基本上,如果 col1 中的相同值在 col2 中具有 nan 值,那么我想删除具有 NaN 值的行。但是,如果这是 Col2 中唯一可用于 Col1 中的值的值,我不会尝试将 NaN 值一起移动

因此,我知道我不能使用它:

new_table = old_table[~old_table['COL2'].isna())

因为这会删除所有NaN不一定是我正在寻找的值

标签: pythonpython-3.xpandasdataframe

解决方案


您可以pandas.DataFrame.duplicated使用pandas.DataFrame.isna

>>> df[~(df.COL1.duplicated(keep=False) & df.COL2.isna())]

   COL1  COL2
0     1   2.0
2     2   6.0
3     2   8.0
4     3  10.0
6     4   NaN

推荐阅读