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

如何正确读取含空列项的TXT文件为Pandas DataFrame?

解析含空列的固定格式空格分隔TXT文件

问题场景

给定以下格式的TXT文件,明确包含球队、编号、球员名、国家四列,其中部分行的球员名列为空:

Arsenal     123                             UK
Barcelona   456    Marc-Andre Ter Stegen    ES
Chelsea     789    Ceasr Azpilicueta        UK

直接用str.split()按多空格分割时,会出现国家代码错位到第三列的问题,目标是得到如下结构化DataFrame:

球队编号球员名国家
Arsenal123NaNUK
Barcelona456Marc-Andre Ter StegenES
Chelsea789Cesar AzpilicuetaUK

解决方案

方法1:用read_fwf解析固定宽度文件(推荐)

该文件本质是固定宽度格式,直接指定列宽度即可精准解析:

import pandas as pd

# 根据文本实际列宽定义,可按需调整
column_widths = [10, 6, 25, 3]
df = pd.read_fwf('your_file.txt', widths=column_widths, names=['球队', '编号', '球员名', '国家'])

# 将空白字符串转换为标准空值
df['球员名'] = df['球员名'].str.strip().replace('', pd.NA)
print(df)

方法2:正则分割+列修正

如果无法确定固定宽度,可用正则匹配分割后修正错位列:

import pandas as pd

# 按多空格分割,但保留含空格的球员名(正则确保分割逻辑适配列结构)
df = pd.read_csv('your_file.txt', header=None, sep=r'\s+(?=\S)', engine='python')

# 修正行结构:仅3个元素的行,将第三列移至第四列,第三列设为空
def fix_row(row):
    if len(row.dropna()) == 3:
        return pd.Series([row[0], row[1], pd.NA, row[2]])
    return row

df = df.apply(fix_row, axis=1)
df.columns = ['球队', '编号', '球员名', '国家']
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:10:33