所以我知道你可以使用这样的东西来删除重复的行:
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
列中数据的输出?
答案 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]