删除重复项同时保留熊猫中的NaN

时间:2014-05-07 08:14:01

标签: python pandas

使用drop_duplicates()方法时,我会减少重复项,但也会将所有NaNs合并到一个条目中。如何在保留具有空条目的行(如np.nan, None or '')?

的同时删除重复项
import pandas as pd
df = pd.DataFrame({'col':['one','two',np.nan,np.nan,np.nan,'two','two']})

Out[]: 
   col
0  one
1  two
2  NaN
3  NaN
4  NaN
5  two
6  two


df.drop_duplicates(['col'])

Out[]: 
   col
0  one
1  two
2  NaN

2 个答案:

答案 0 :(得分:8)

尝试

df[(~df.duplicated()) | (df['col'].isnull())]

结果是:

col
0   one
1   two
2   NaN
3   NaN     
4   NaN

答案 1 :(得分:1)

嗯,一个不太好的解决方法是首先保存NaN并将它们放回去:

temp = df.iloc[pd.isnull(df).any(1).nonzero()[0]]
asd = df.drop_duplicates('col')
pd.merge(temp, asd, how='outer')
Out[81]: 
   col
0  one
1  two
2  NaN
3  NaN
4  NaN