如何在Python中按列合并多个CSV(.txt)文件?
解决方案:横向合并多个CSV格式的TXT文件
你之前用pd.append()得到行堆叠的结果,是因为这个方法本身就是用来纵向追加行的。要实现列并排的横向合并,应该用pd.concat()并指定axis=1参数。
具体步骤和代码:
- 先把所有读取后的DataFrame存入一个列表,再一次性合并,比循环里逐个合并效率更高。
- 使用
pd.concat(..., axis=1)实现横向拼接。 - 可选:给每个文件的列加前缀(比如文件名),避免列名重复导致混乱。
代码示例:
import pandas as pd import os # 初始化空列表存储每个文件的DataFrame df_list = [] # 遍历当前目录下的txt文件 for file in os.listdir(os.getcwd()): if file.endswith('.txt'): # 读取文件,保留你的原参数 df = pd.read_csv(file, sep='\t', skiprows=[1]) # 可选:给列名加上文件名前缀,避免重复 df = df.add_prefix(f"{file.split('.')[0]}_") df_list.append(df) # 横向合并所有DataFrame,axis=1表示按列拼接 master_df = pd.concat(df_list, axis=1) # 保存结果到新的CSV文件 master_df.to_csv('merged_result.csv', index=False)
注意事项:
- 如果你的每个文件的行数完全一致,合并后会完美对齐;如果行数不一致,缺失的位置会填充
NaN,可根据需求进一步处理。 os.listdir()返回的文件顺序可能不稳定,如果需要按特定顺序合并(比如文件名排序),可以先对文件列表排序:sorted(os.listdir(os.getcwd()))。
内容的提问来源于stack exchange,提问作者Ahmed S. Razeen
相关产品推荐
相关产品推荐

