簡體   English   中英

如何使用python pandas比較來自兩個不同csv的單元格值

[英]How to compare cells values from two different csv using python pandas

我有兩個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

如果來自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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM