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

如何用Pandas导入含重复表头行的CSV并提取值?

解决每行含重复表头的CSV数据提取问题

你的问题核心是CSV每行都是键: 值的重复表头格式,仅用sep=';'分割只能得到带键名的列内容,需要额外处理提取值部分。以下是两种可行方案:

方案一:字符串分割提取

先按分号读取数据,再对每个列做字符串分割,提取冒号后的内容并清理空格,最后转换数值类型:

import pandas as pd

# 读取文件,指定分隔符和列名
df = pd.read_csv('base.txt', sep=';', header=None, names=['player', 'level', 'last_login', 'coins'])

# 遍历所有列,提取冒号后的有效内容
for col in df.columns:
    # 按冒号分割,取最后一部分,再去除前后空格
    df[col] = df[col].str.split(':').str[-1].str.strip()

# 将数值列转换为整数类型(player列保留字符串)
df[['level', 'last_login', 'coins']] = df[['level', 'last_login', 'coins']].astype(int)

print(df)

方案二:正则表达式提取

用正则直接匹配冒号后的内容,代码更简洁:

import pandas as pd

df = pd.read_csv('base.txt', sep=';', header=None, names=['player', 'level', 'last_login', 'coins'])

# 用正则提取冒号后(忽略可能的空格)到行尾的内容
df = df.apply(lambda col: col.str.extract(r':\s*(.*)$')[0])

# 转换数值列类型
df[['level', 'last_login', 'coins']] = df[['level', 'last_login', 'coins']].astype(int)

print(df)

运行后都会得到你想要的结果:

player  level  last_login   coins
0    John Doe     45  7854414174    7600
1   Anckx Uj    471  7854418847  684111

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:20:32