【问题标题】:How to compare cells values from two different csv using python pandas如何使用 python pandas 比较来自两个不同 csv 的单元格值
【发布时间】:2019-07-25 16:36:22
【问题描述】:

我有两个 csv 文件,它们具有相同的列(文件名和 MD5),但是,值在不同的行中(csv1 中的文件名在第 2 行(第 1 行是标题)但是,csv2 中的相同文件名可能在第 5 行。

我尝试了“合并”模块,其中“如何”设置为:右、左、内、外;结果添加了额外的行和列。我还尝试了“isin”模块。

matchfiles = (df1.Filename.isin(df2.Filename)

if (df1[['Filename','MD5']]) == (df2[['Filename','MD5']]):
    print(df1[['Filename','MD5']])

我希望输出打印带有匹配“MD5”的“文件名”。

错误是:

TypeError: unsupported operand type(s) for &: 'str' and 'bool' 

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

数据集 1:
文件名 MD5

I417122 - KP -pst 125e46b4477934fa7495f
I417122 - KP - xml eee4acefced33e6595a32
J944737 - DJ gif f52483135c9e8f6fb2680
J944737 - DJ txt c1b76990e2e19a7eb2332
J944737 - DJ 文档 b1aa2e981d8c04860810
J944737 - DJ docx 55b325a7ef73ba8a0e2f9
J944737 - JD.zip 47fcccba65018d88a3c7e

数据集 2:
文件名 MD5

I417122 - KP -pst 125e46b4477934fa7495f
I417122 - KP - xml 47fcccba65018d88a3c7e
J944737 - DJ gif f52483135c9e8f6fb2680
J944737 - DJ txt c1b76990e2e19a7eb2856
J944737 - DJ 文档 eee4acefced33e6595a32
J944737 - DJ docx 55b325a7ef73ba8a0e2f9
J944737 - JD.zip 47fcccba65018d88a3c7e

预期结果: 文件名 MD5

I417122 - KP -pst 125e46b4477934fa7495f
J944737 - DJ gif f52483135c9e8f6fb2680
J944737 - DJ 文档 eee4acefced33e6595a32
J944737 - DJ docx 55b325a7ef73ba8a0e2f9
J944737 - JD.zip 47fcccba65018d88a3c7e

【问题讨论】:

  • 请编辑并添加您的数据集外观的表格。这将极大地帮助回答您的问题。同时添加所需的输出
  • 你肯定需要格式化你的问题..没有人会理解你的要求。
  • 你应该可以做类似pd.merge(df1,df2,on='Filename')pd.merge(df1[["md5","Filename"]],df2[["md5","Filename"]],on='Filename')的事情。
  • 抱歉,新来的论坛。

标签: python pandas csv


【解决方案1】:

如果来自 csv1 的文件名在 csv2 中,则这将返回一个包含 1 的两列数据框,否则将返回 0

matching_df = df1.assign(Indf2=df1.Filename.isin(df2.Filename).astype(int))

然后你可以删除第二列为零的所有行,然后根据Filename合并:

matching_df = matching_df[matching_df.Indf2 == 1]
final_df = matching_df.merge(df1, how="left", on="Filename")
final_df = final_df.drop(columns=["Filename_y", "Indf2"])
print(final_df)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多