【问题标题】:Python not recognising duplicatesPython无法识别重复项
【发布时间】:2020-04-06 18:59:55
【问题描述】:

我拥有的 2 个数据集的前 5 行的示例快照 Emp1 数据框:

Name
--------
John
Matt
Anish
Dave
Mike

Emp2 数据框:

Name
--------
Sue
Matt
Raj
Dave
Simon

我将两者连接起来(在过程中将它们转换为对象以防万一)

 Con=pd.concat(emp1.astype(str),emp2.astype(str))
Con
Name
-----
John
Matt
Anish
Dave
Mike
Sue
Matt
Raj
Dave
Simon

然而,由于某种原因,python 似乎并不认为 Matt 和 Dave 是重复的

Con.duplicated()
False
False
False
False
False
False
False
False
False
False

我也尝试使用 pd.merge 进行外部连接,但仍然无法识别重复项。我想将主 Emp1 与 Emp2 进行比较,并找出 Emp1 中的哪些名称不在 Emp2 中。所以我的逻辑是合并/连接两者并选择不重复的值。数据是从excel中读取的。

非常感谢

【问题讨论】:

  • 试试 df.to_string().split('\n') 看看名字是否有间距问题
  • 你可以用str.strip()去掉空格

标签: python python-3.x pandas merge


【解决方案1】:

可能有一些尾随空格,因此请删除它们:

df1['name'] = df1['name'].str.strip()
df2['name'] = df2['name'].str.strip()

【讨论】:

    【解决方案2】:

    我重复了你的步骤:

    > import pandas as pd
    > df1 = pd.DataFrame({"Name": ["John", "Matt", "Anish", "Dave", "Mike"]})
    > df2 = pd.DataFrame({"Name": ["Sue", "Matt", "Raj", "Dave", "Simon"]})
    > df3 = pd.concat([df1, df2])
    > df3.duplicated()
    0    False
    1    False
    2    False
    3    False
    4    False
    0    False
    1     True
    2    False
    3     True
    4    False
    dtype: bool
    

    【讨论】:

    • 是的,但是从excel读取数据时会出现问题。
    猜你喜欢
    • 1970-01-01
    • 2011-04-15
    • 2018-09-24
    • 1970-01-01
    • 2018-07-21
    • 2020-10-05
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多