全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
1114 1
2023-07-08
悬赏 1 个论坛币 未解决
各位大神,本人在用Python对多个excel文件合并时,遇到个问题需要将特定条件下的excel合并。条件是第三行“”相同,如果不同就另外输出一个excel。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2025-1-22 07:48:06
遍历指定文件夹中的所有 Excel 文件,读取它们的内容。
获取每个 Excel 文件第三行的唯一标识。
如果“第三行”判断只是看整行是否完全相同,可以把这一整行的内容当作一个“key”;
如果只看第三行某个单元格(例如第三行第一列的值),就把那个单元格作为“key”。
建立一个 字典 (dict),使用上面得到的第三行内容作为字典的键(key),对应一个装载该类 Excel 内容的列表。
根据字典键分组,将相同 key 的数据合并,最后输出到对应的 Excel 文件中。
下面我们使用 Pandas 库来做一个示例。如果你需要基于 openpyxl 或其他库进行读写,也可做相应的修改。

复制代码


说明
header=None

当我们不确定 Excel 的第一行是否适合作为字段名时,可以先全部读进来;这样 Pandas 默认会给列加上数值索引(0,1,2...)。
如果你的 Excel 文件有表头,你可以根据需求调整 header 参数的值,或者在后续对 DataFrame 进行处理、重新设置表头。
df.iloc[2, 0]

iloc[2, 0] 表示读取第三行(索引2)、第一列(索引0)的值。
如果想对第三行所有列进行对比,可以使用 df.iloc[2, :] 获取整行数据,并将它转为元组或字符串用作分组键。
grouped_data 字典

字典的键(key)就是第三行的内容,值(value)是一个列表,列表里存放相同键对应的多个 DataFrame。
合并操作

这里使用 pd.concat(dfs, ignore_index=True) 对同一个键下的 DataFrame 进行 行方向的拼接(即把一个表紧接在另一个表的后面)。如果你的需求是想做列拼接或更复杂的合并方式,可以参考 pandas.merge 或设置 axis 参数等。
输出文件命名

输出文件名中加入了第三行内容作为标识。
如果第三行的内容存在特殊字符或者过长,不适合做文件名,你可以做一些格式化处理,比如去掉特殊字符或者只取前面一部分作为文件名后缀等。
这样就可以实现:当多个 Excel 文件第三行内容相同时合并到一个新文件;如果第三行内容不一致,则自动分到不同的输出文件。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群