使用pandas合并无表头txt文件多列为冒号分隔字段的方法
无表头5列txt列拼接的可落地pandas实现方案
前置准备
先确保环境安装了pandas,未安装的话直接在终端执行:pip install pandas
逐行可运行代码(新手直接复制改路径即可使用)
因为你的文件没有列标题,pandas读取时会自动给列分配默认索引(0、1、2、3、4),刚好对应原文件的第1到第5列,完全不需要手动设置列名:
import pandas as pd # 1. 读取无表头的txt文件 # 参数说明: # header=None: 明确告知pandas文件无列标题,不会误把第一行数据当表头 # sep="\s+": 匹配任意多个空格/制表符作为列分隔,适配你示例里的多空格分隔格式 df = pd.read_csv("替换成你的原txt文件路径.txt", header=None, sep="\s+") # 2. 按要求拼接列:前3列(索引0/1/2)拼为第一组,后2列(索引3/4)拼为第二组,同组用冒号分隔 # astype(str)将所有值转为字符串,避免数字类型拼接时报类型错误 col_group1 = df[[0, 1, 2]].astype(str).agg(":".join, axis=1) col_group2 = df[[3, 4]].astype(str).agg(":".join, axis=1) # 3. 合并两组内容并保存为新文件 final_result = pd.concat([col_group1, col_group2], axis=1) # 参数说明: # index=False: 不保存自动生成的行号 # header=False: 不保存自动生成的列名 # sep="\t": 两组内容之间用制表符分隔,若要和示例里的多空格效果完全一致,把sep值换成" "即可 final_result.to_csv("拼接完成的结果.txt", index=False, header=False, sep="\t")
常见问题适配
- 如果读取时识别的列数不对:检查原文件是否存在列内带空格的情况,若为固定宽度分列的格式,可将
pd.read_csv替换为pd.read_fwf读取 - 如果输出文件出现多余空行:在
to_csv方法中添加lineterminator="\n"参数,统一换行格式即可 - 如果原文件存在空行:读取时添加参数
skip_blank_lines=True,自动跳过无效空行
内容的提问来源于stack exchange,提问作者hurricane2923
相关产品推荐
相关产品推荐

