使用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
答案 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