Tim*_*ler 3 python duplicates dataframe pandas jupyter
我使用的是Pandas,Jupyter笔记本和Python.我有一个包含4列和10000条记录的数据集.目前,当我使用以下代码来获取重复项时,代码会以某种方式拾取错误的记录.仅供参考:列的数据类型如下:
Initial_Date = int64
Final_Date = int64
Origin = object
sub_location = object
Run Code Online (Sandbox Code Playgroud)
我目前的代码是:
dup = df.duplicated(['Initial_Date','Final_Date','Origin','sub_location'], keep='last')
Run Code Online (Sandbox Code Playgroud)
以下是使用上述代码获取的数据集的示例:
00121980,00121980,Australia,Brighton:Queensland
00121980,00121980,Australia,Brisbane:Queensland
17021987,17021987,Bangladesh,Sylhet-Sunamganj
17021987,17021987,Brazil,Sao Paolo suburb
Run Code Online (Sandbox Code Playgroud)
如果你看前两个记录:初始和最终日期和Origin是匹配的,但sub_origin不匹配,一个是Brighton,另一个是Brisbane.
同样适用于最后两个记录,日期匹配,但Origin不相同.
据此,我了解df.duplicated没有找到正确的记录,或者我没有正确使用它.df.duplicated的数据类型是否重要?
如果我只是使用df.duplicated那么返回的布尔系列没有重复.有人可以解释/告诉我如何使用.duplicated吗?
请记住,这不是完整的数据集,但我提供的示例正是我在真实数据集中遇到的问题.我缩小了df.duplicated标准并遇到了这个错误.
谢谢你们:D
注意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
Run Code Online (Sandbox Code Playgroud)
我想你想用 keep=False
来自docs:
保持:{'first','last',False},默认'first'
first:除第一次出现外,将重复标记为True.
last:标记重复为True,除了最后一次出现.
错误:将所有重复项标记为True.