删除重复项,但忽略空值

时间:2018-05-03 12:12:35

标签: python pandas

所以我知道你可以使用这样的东西来删除重复的行:

the_data.drop_duplicates(subset=['the_key'])

但是,如果the_key对某些值为空,如下所示:

   the_key  C  D
1      NaN  *  *
2      NaN     *
3      111  *  *
4      111

它会保留C列中标记的内容。是否可以让drop_duplicates将所有nan视为不同,并获得保存D列中数据的输出?

2 个答案:

答案 0 :(得分:7)

使用与duplicated链接的isna并按boolean indexing过滤:

df = df[(~df['the_key'].duplicated()) | df['the_key'].isna()]
#fol oldier pandas versions
#df = df[(~df['the_key'].duplicated()) | df['the_key'].isnull()]
print (df)
   the_key  C    D
1      NaN  *    *
2      NaN       * 
3    111.0  *    *

答案 1 :(得分:1)

我这样做:

dupes = the_data.duplicated(subset=['the_key'])
dupes[the_data['the_key'].isnull()] = False
the_data = the_data[~dupes]