我正在使用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
答案 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。