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

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

Max*_*axU 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
Run Code Online (Sandbox Code Playgroud)

我想你想用 keep=False

来自docs:

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

first:除第一次出现外,将重复标记为True.

last:标记重复为True,除了最后一次出现.

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