Pandas Dataframe重复记录拾取错误记录

时间:2016-06-02 20:37:14

标签: python pandas dataframe duplicates jupyter

我正在使用Pandas,Jupyter笔记本和Python。我有一个包含4列和10000条记录的数据集。目前,当我使用以下代码来获取重复项时,代码会以某种方式拾取错误的记录。仅供参考:列的数据类型如下:

Initial_Date = int64
Final_Date = int64
Origin = object
sub_location = object

我目前的代码是:

dup = df.duplicated(['Initial_Date','Final_Date','Origin','sub_location'], keep='last')

以下是使用上述代码获取的数据集示例:

00121980,00121980,Australia,Brighton:Queensland
00121980,00121980,Australia,Brisbane:Queensland
17021987,17021987,Bangladesh,Sylhet-Sunamganj
17021987,17021987,Brazil,Sao Paolo suburb

如果查看前两个记录:初始和最终日期与Origin匹配,但sub_origin不匹配,一个是Brighton,另一个是Brisbane。

同样适用于最后两个记录,日期匹配但是Origin不一样。

据此,我知道df.duplicated没有找到正确的记录,或者我没有正确使用它。数据类型是否与df.duplicated相关?

如果我只使用df.duplicated,那么返回的布尔系列没有重复项。有人可以解释/告诉我如何使用.duplicated吗?

请记住,这不是完整的数据集,但我提供的示例正是我在真实数据集中遇到的问题。我缩小了df.duplicated标准并遇到了这个错误。

谢谢你们:D

1 个答案:

答案 0 :(得分:6)

注意keep参数:

In [116]: s = pd.Series([1,1,1,2,3])

In [117]: s
Out[117]:
0    1
1    1
2    1
3    2
4    3
dtype: int64

In [118]: s.duplicated(keep='first')
Out[118]:
0    False
1     True
2     True
3    False
4    False
dtype: bool

In [119]: s.duplicated(keep='last')
Out[119]:
0     True
1     True
2    False
3    False
4    False
dtype: bool

In [120]: s.duplicated(keep=False)
Out[120]:
0     True
1     True
2     True
3    False
4    False
dtype: bool

我想你想使用keep=False

来自docs

  

保持:{'first','last',False},默认为'first'

     首先

:将重复项标记为True,但第一次出现除外。

     

last :将重复项标记为True,但最后一次出现除外。

     

错误:将所有重复项标记为True。