You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas read_csv()读取固定列并将剩余内容归入最后一列?

解决方案

你可以通过两种方式实现需求,核心思路是拆分出前9个固定字段,再将剩余内容合并为第10列:

方法一:逐行读取手动处理

直接读取文件每行内容,拆分出前9个字段,剩余部分合并为单个字符串,最后构造DataFrame:

import pandas as pd

# 定义10列的名称,替换成你实际的列名
columns = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', 'col8', 'col9', 'everything else']
data = []

with open('你的文件路径.txt', 'r') as f:
    for line in f:
        # 去除首尾空白后按任意空白分割
        parts = line.strip().split()
        # 处理行内容:前9个字段保留,剩余部分合并;字段不足9个时补空值
        if len(parts) > 9:
            row = parts[:9] + [' '.join(parts[9:])]
        else:
            row = parts + [None] * (10 - len(parts))
        data.append(row)

df = pd.DataFrame(data, columns=columns)

方法二:先读取所有列再合并额外列

先用read_csv读取所有列,再将第10列及以后的内容合并为everything else,最后保留需要的列:

import pandas as pd

# 读取文件,按任意空白分割所有列
df = pd.read_csv('你的文件路径.txt', sep='\s+', header=None)

# 给前9列命名,替换成你实际的列名
col_names = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', 'col8', 'col9']
# 给额外列临时命名
df.columns = col_names + [f'extra_{i}' for i in range(len(df.columns)-9)]

# 合并所有额外列为单个字符串,空值自动忽略
df['everything else'] = df.iloc[:,9:].apply(lambda x: ' '.join(x.dropna().astype(str)), axis=1)

# 只保留需要的10列
df = df[col_names + ['everything else']]

针对你给出的简化示例(前3列+剩余内容),用上述方法处理后,对应列会得到你预期的结果:

ddd
ppp sjkhdkjsh skdjhsksdkskjdh  ksjh sdkjsdh  ksjdh
iii

内容的提问来源于stack exchange,提问作者WoJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:32:45