【发布时间】: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')的事情。 -
抱歉,新来的论坛。