Pandas.Dataframe.duplicated()包含缺少的行作为重复项

时间:2016-04-26 19:35:19

标签: python pandas ipython

我有一个名为Merged的Pandas Dataframe,其属性名为RegimentalNumber

我使用Pandas.Dataframe.duplicated()方法从此数据框中检索重复项,如下所示:

In [16]: Merged[Merged.RegimentalNumber.duplicated() == True]

但是,看起来结果还包含RegimentalNumber缺少值作为重复项。

duplicated()方法是否采用标记或参数将缺失值排除为重复值?我看了API Documentation这个方法,但找不到这样的旗帜。

当然,我可以简单地排除这样的缺失值:

In [17]: duplicates = Merged[Merged.RegimentalNumber.duplicated() == True]
In [18]: duplicates[duplicates.RegimentalNumber.notnull()]

但是,对我来说,duplicated()方法还包含缺少重复的值似乎并不合适。是否有更简单的一步解决方案?

1 个答案:

答案 0 :(得分:1)

您可以使用df.dropna()来确保忽略NULL值。 例如,

import numpy as np
import pandas as pd
df = pd.DataFrame({'foo': [1, np.nan, 1, 2, 3, 2, 3, np.nan, float('nan'), 
                           np.nan, float('nan'), 'xyz']})

print(df.dropna().loc[df['foo'].duplicated()])

产量

  foo
2   1
5   2
6   3

请注意,df['foo'].duplicated()是一个布尔系列,其索引可能大于df.dropna().index。但是,当您使用df.dropna().loc选择行时,布尔系列索引将重新编制索引以匹配df.dropna().index,因此可以方便地删除NULL值。