如何用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
相关产品推荐
相关产品推荐

