Python入门求助:合并同结构.txt格式Excel表格的正确方法
解决两个结构相同Excel文件的合并问题
嘿,刚入门Python的话,咱们一步步来理清楚你的问题哈~ 首先看你写的代码里有几个小问题,然后咱们用正确的方法来实现合并:
先说说你代码里的几个小问题
- 模块导入语法错误:
import numpy as np import pandas as pd应该分成两行写(更推荐这种方式,可读性更好),或者用分号分隔 - 文件路径写法问题:路径里的空格和格式不对,比如
r' \C:..xls'应该去掉开头的空格,写成类似r'C:\your\file\path\file1.xls'这样的正确绝对路径 pd.merge用错了场景:merge是用来做类似数据库的关联合并(比如按某一列匹配行),而你要合并结构相同的表,应该用pd.concat来纵向堆叠行;而且你传的是字符串'bd1'、'bd2',应该直接传变量名(不要加引号)- 读取文件的表头处理:第二个文件用了
header="none",skiprows=1,如果两个表结构完全相同,要确保读取后的列名一致,不然合并会出问题
正确的合并方法(纵向堆叠)
因为两个表结构相同,咱们只需要把第二个表的所有行追加到第一个表后面就行,用pd.concat就可以轻松实现:
修正后的代码
# 正确导入模块(分行写更规范) import numpy as np import pandas as pd # 读取第一个Excel文件,注意替换成你自己的正确路径 bd1 = pd.read_excel(r'C:\your\folder\file1.xls', sheet_name="Sheet1") # 读取第二个Excel文件:如果第二个文件有重复的表头行,用skiprows=1跳过第一行 # 如果第二个文件没有重复表头,直接用和bd1一样的读取方式即可 bd2 = pd.read_excel(r'C:\your\folder\file2.xls', sheet_name="Sheet1", skiprows=1) # 用concat纵向合并两个DataFrame,ignore_index=True重置合并后的索引,避免索引重复 bd3_new = pd.concat([bd1, bd2], ignore_index=True) # 保存合并后的文件到指定路径,index=False避免把DataFrame索引存进Excel bd3_new.to_excel(r'C:\your\folder\merged_file.xls', index=False)
关键说明
pd.concat([bd1, bd2], ignore_index=True):把两个DataFrame按行堆叠,ignore_index=True是为了生成新的连续索引,避免合并后出现重复的索引值to_excel里的index=False:避免把DataFrame的索引列保存到Excel里,更符合常规的Excel文件格式- 如果两个文件的表头完全一致,不需要额外处理表头;如果第二个文件有重复的表头行,用
skiprows=1跳过那一行即可
内容的提问来源于stack exchange,提问作者Noldo17




