比较和检索 5 个 excel 中的不匹配值

Compare and retrieve unmatched values in 5 excels

提问人:Varahi Kapoor 提问时间:6/8/2023 最后编辑:Varahi Kapoor 更新时间:6/8/2023 访问量:43

问:

我编写了以下代码来比较和检索两个 excel 之间的不匹配值,并将工作表名称放在从检索到的工作表中检索到的值的前面。

import pandas as pd
import openpyxl
df1 = pd.read_excel('pre post.xlsx', 'pre')
df2 = pd.read_excel('pre post.xlsx', 'post')
result = df2.merge(df1, indicator = True, how = 'outer').loc\[lambda v: v\['\_merge'\] != 'both'\]
result\['\_merge'\] = result\['\_merge'\].map({'left_only': 'pre', 'right_only': 'post'})
result.to_excel('final.xlsx')

现在,我想对包含大量 IP 地址的 5 个 excel 工作簿做同样的事情。请帮忙!我被卡住了!!下面的代码是我正在尝试的代码:

import pandas as pd 
import openpyxl 
df1 = pd.read_excel('excel1.xlsx') 
df2 = pd.read_excel('excel2.xlsx') 
df3 = pd.read_excel('excel3.xlsx') 
df4 = pd.read_excel('excel4.xlsx') 
df5 = pd.read_excel('excel5.xlsx') 
dfs = [df1, df2, df3, df4, df5] 
filenames = ['excel1.xlsx', 'excel2.xlsx', 'excel3.xlsx', 'excel4.xlsx', 'excel5.xlsx'] 
result = pd.concat(dfs, ignore_index = True, sort =False) 
unmatched_values = [] 
for i, df in enumerate(dfs):     
    unmatched = pd.DataFrame(columns=df.columns)     
    for _, row in df.iterrows():         
        if row.tolist() not in result.values.tolist():             
            row['_filename'] = filenames[i]             
            unmatched = unmatched.append(row)     
    unmatched_values.append(unmatched) 
unmatched_df = pd.concat(unmatched_values, ignore_index = True)
unmatched_df.to_excel('unmatched_values.xlsx', index = False)

此代码未检索任何值,并且不起作用。而且,它比上面的代码更复杂。 我该怎么办?

Python Pandas Excel 数据帧 比较

评论


答: 暂无答案