python实现对比两个相同列数据中的差异并另存标黄

import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import PatternFill

# 读取数据
df1 = pd.read_excel(r'C:\Users\zxh\Desktop\2024年待核对信息.xlsx')
df2 = pd.read_excel(r'C:\Users\zxh\Desktop\2022年统计期间的学习经历.xlsx')

# 合并两个数据集
merged_df = df2.merge(df1, on=['人员编码','姓名','学历'], suffixes=('_data1', '_data2'))

# 比较每一行数据的差异
for index, row in merged_df.iterrows():
    for col in df1.columns:
        if col != '姓名' and col != '人员编码' and col != '学历' and row[col + '_data1'] != row[col + '_data2']:
            merged_df.at[index, col] = f"{row[col + '_data1']} -> {row[col + '_data2']}"

# 将结果保存到新的Excel文件中
merged_df.to_excel(r'C:\Users\zxh\Desktop\output_xueli0716.xlsx', index=False)

# 加载新创建的Excel文件并设置黄色底色
wb = load_workbook(r'C:\Users\zxh\Desktop\output_xueli0716.xlsx')
ws = wb.active
yellow_fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')

for row in ws.iter_rows(min_row=2):  # 从第二行开始,因为第一行是列名
    for cell in row:
        if cell.value and isinstance(cell.value, str) and '->' in cell.value:
            cell.fill = yellow_fill

# 保存带有黄色底色的单元格
wb.save(r'C:\Users\zxh\Desktop\output_with_highlight_xueli0716.xlsx')

### 回答1: 可以使用PythonPandas库来实现这一步骤:1. 使用Pandas的read_excel()函数读取两个Excel文件。 2. 使用Pandas的merge()函数将这两个文件合并。 3. 使用Pandas的drop_duplicates()函数删除重复的行。 4. 使用Pandas的to_excel()函数将剩余的数据存为两个新的Excel文件。 ### 回答2: 在Python,可以使用`pandas`库来进行Excel文件的读取、处理和保存。下面是一个示例代码,用于将两个Excel文件进行对比,删除相同数据的行,并将剩下的数据分别保存到两个新文件。 首先,需要安装`pandas`库: ```python pip install pandas ``` 然后,通过以下代码实现对比和分割保存的功能: ```python import pandas as pd # 读取两个Excel文件数据 df1 = pd.read_excel('file1.xlsx') df2 = pd.read_excel('file2.xlsx') # 对比两个文件数据差异,并保留不同数据的行 df_diff1 = pd.DataFrame(df1).merge(df2, how='left', indicator=True) df_diff1 = df_diff1[df_diff1['_merge'] == 'left_only'] df_diff2 = pd.DataFrame(df2).merge(df1, how='left', indicator=True) df_diff2 = df_diff2[df_diff2['_merge'] == 'left_only'] # 删除'_merge' df_diff1 = df_diff1.drop(columns='_merge') df_diff2 = df_diff2.drop(columns='_merge') # 保存差异数据两个新文件 df_diff1.to_excel('file1_diff.xlsx', index=False) df_diff2.to_excel('file2_diff.xlsx', index=False) ``` 以上代码首先使用`pd.read_excel()`函数读取两个Excel文件的数据,并存储在DataFrame对象。接下来,使用`merge`函数将两个DataFrame对象进行对比,并使用`'_merge'`指示合并的结果。将合并结果为`'left_only'`的行保留,即为两个文件不同的数据。然后,使用`drop`函数删除`'_merge'`,并使用`to_excel`函数将结果保存为新的Excel文件。 请注意,以上代码假设两个Excel文件数据结构和名是相同的。如果两个文件的数据结构不同,需要根据实际情况进行相应的处理。 ### 回答3: 您可以使用Python的`pandas`库来实现这个功能。下面是一个示例代码: ```python import pandas as pd # 读取两个Excel文件为数据框 df1 = pd.read_excel("file1.xlsx") df2 = pd.read_excel("file2.xlsx") # 将两个数据框合并,使用indicator参数记录数据来自哪个文件 merged = pd.concat([df1, df2], ignore_index=True, sort=False, keys=["file1", "file2"], names=["File"]) merged["_merge"] = merged.duplicated(keep=False) # 根据数据来自的文件和标记连接方式,判断数据是否相同 merged["is_duplicate"] = merged["_merge"].map({'left_only': False, 'right_only': False, 'both': True}) # 过滤出不相同的行 filtered = merged[merged["is_duplicate"] == False].copy() # 删除多余的 filtered.drop(["_merge", "is_duplicate"], axis=1, inplace=True) # 将数据拆分为两个数据框 df1_new = filtered[filtered.index.get_level_values("File") == "file1"].droplevel("File") df2_new = filtered[filtered.index.get_level_values("File") == "file2"].droplevel("File") # 将两个数据另存为新的Excel文件 df1_new.to_excel("file1_new.xlsx", index=False) df2_new.to_excel("file2_new.xlsx", index=False) ``` 这段代码首先使用`pandas`的`read_excel`函数读取两个Excel文件为数据框。然后将两个数据框合并为一个新的数据框,并添加一个`_merge`来标记数据来自哪个文件。接下来根据标记判断数据是否相同,过滤出不相同的行,并删除多余的。最后将两个数据框分别另存为新的Excel文件。 请根据您的实际情况修改文件名和路径,并确保已安装好`pandas`库。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值