多Excel单工作表数据合并:基于非空值填充的单元格整合需求
合并Excel文件并填充空单元格的解决方案
我来帮你搞定这个Excel数据合并的需求——把多个文件里同ID的记录合并,用非空值填充空单元格,用Python的pandas库就能轻松实现,步骤如下:
1. 准备依赖
首先确保你安装了pandas和处理Excel的依赖包,打开终端运行:
pip install pandas openpyxl
2. 编写合并代码
创建一个Python脚本(比如merge_excels.py),把下面的代码放进去,记得替换成你实际的文件路径:
import pandas as pd # 这里换成你自己的Excel文件路径列表 file_paths = ["Excel1.xlsx", "Excel2.xlsx", "Excel3.xlsx"] # 批量读取所有Excel文件 data_frames = [] for file in file_paths: # 读取文件,默认读取第一个工作表 df = pd.read_excel(file) data_frames.append(df) # 把所有文件的数据合并到一个DataFrame里 combined_data = pd.concat(data_frames, ignore_index=True) # 按ID、Name、User分组,对每个属性列提取非空值 # 逻辑是:如果列里有非空值,取第一个;如果全空就留空 merged_data = combined_data.groupby(["ID", "Name", "User"], as_index=False).agg( lambda col: col.dropna().iloc[0] if not col.dropna().empty else None ) # 把合并后的结果保存成新的Excel文件 merged_data.to_excel("合并结果.xlsx", index=False)
3. 代码说明
- 第一步批量读取所有Excel文件,把它们都转换成pandas的DataFrame格式;
concat会把所有数据合并成一个大表,此时同ID的记录会有多条,各自带部分非空值;groupby按照ID、Name、User这些唯一标识字段分组,然后对每个属性列(Prop1、Prop2、Prop3)提取第一个非空值,这样就自动用其他文件里的非空内容填充了空单元格;- 最后把处理好的数据保存成新的Excel文件,就是你想要的结果啦。
如果你的文件是CSV格式,只需要把pd.read_excel换成pd.read_csv,to_excel换成to_csv就行,逻辑完全一样。
内容的提问来源于stack exchange,提问作者DarthVader
相关产品推荐
相关产品推荐

