我有一个名为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()
方法还包含缺少重复的值似乎并不合适。是否有更简单的一步解决方案?
答案 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值。