【问题标题】:Compare 3 csv Files with Python Pandas将 3 个 csv 文件与 Python Pandas 进行比较
【发布时间】:2021-03-29 16:00:46
【问题描述】:

我需要比较 3 个 csv 文件以与 3 列进行比较(所有 3 个 csv 文件上的所有三列都具有相同的名称),以计算 1)重复的内容和 2)不同的内容(仅计数即可)。

例如。 csv1 colB 需要检查并与 csv2 colB 和 csv3 colb 进行比较,以了解重复的计数总数(在 csv2,3 上匹配)和 coutn 总数(在 csv2/3 上匹配)。

所有 3 个 csv 都有相同的列名,colB 有 ip 地址,colC 有哈希值,colD 有域名。

我已经尝试过将 colB 与失败匹配的测试:

print(df[~df.colB.isin(df1.colB)]) #prints out all columns from df

尝试添加:

print(df[~df.colB.isin(df1.colB).count()]) #get multiple traceback errors

【问题讨论】:

  • 数据框中的索引是否相同?我的意思是索引通常是 0,1,2,3 等。
  • 是的。它们都是一样的。

标签: python pandas dataframe csv


【解决方案1】:

我们将数据帧称为df1df2df3

数据框中的每一列都是一个系列,因此您可以比较它们以获得一个布尔系列:

checkB12 = (df1.colB == df2.colB)

这将给出一个具有 (True, True, False,...) 或类似内容的 Pandas 系列对象。

同样,

checkB13 = (df1.colB == df3.colB)

那么,

duplicated = checkB12 or checkB13

这会为您提供一系列布尔值,当df1df2df3 至少匹配时为真。执行 duplicated.sum() 将为您提供 True 值的总数,即 df1 中的案例总数,在 df2df3 中至少重复一次。

我不太明白你所说的数据框之间的“有什么不同”是什么意思,所以我不能确定你需要什么代码。

【讨论】:

    【解决方案2】:

    尝试使用value_counts(),您将获得 True 和 False 的值。

    df.colB.isin(df1.colB).value_counts()
    

    我希望这就是你要找的。​​p>

    【讨论】:

    • 感谢 Karthik。 “假”值计数重复计数吗?这可以通过添加第三个 csv 查找来完成吗?即 df2 和 df1。
    猜你喜欢
    • 2017-07-14
    • 2018-03-07
    • 1970-01-01
    • 2022-01-17
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多