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

使用Pandas将特定格式字符串拆分转换为DataFrame遇阻求助

嘿,我来帮你搞定这个字符串转DataFrame的问题!你遇到的核心痛点是球员名包含空格,直接按空格拆分肯定会乱套对吧?别担心,用正则表达式就能精准提取每个字段,下面是具体的解决步骤:

解决方法

我们的思路是用正则匹配每行的固定结构(位置+带空格的球员名+浮点评分),再把提取到的内容整理成DataFrame。

步骤1:导入必要的库

import pandas as pd
import re

步骤2:预处理原始字符串

先把你的原始字符串拆分成单独的行,过滤掉空行和多余的空格:

raw_str = '''Position Players Average Form
Goalkeeper Manuel Neuer 4.17017132535
 Defender Diego Godin 4.14973163459
 Defender Giorgio Chiellini 4.10115207373
 Defender Thiago Silva 3.93318274318
 Defender Andrea Barzagli 3.85132973289
Midfielder Arjen Robben 4.80556193806
Midfielder Alexander Meier 4.51037598508
Midfielder F...'''

# 按换行拆分,同时去掉每行首尾的空格,过滤空行
lines = [line.strip() for line in raw_str.splitlines() if line.strip()]

# 跳过第一行的标题,只保留数据行
data_lines = lines[1:]

步骤3:用正则提取字段

我们写一个正则模式,专门匹配「位置(单个单词)+ 球员名(可含空格)+ 浮点评分」的结构:

# 正则说明:^匹配行开头,(\w+)抓位置,(.*?)非贪婪抓球员名,(\d+\.\d+)抓评分
pattern = re.compile(r'^(\w+)\s+(.*?)\s+(\d+\.\d+)$')

# 遍历每行提取有效数据
processed_data = []
for line in data_lines:
    match_result = pattern.match(line)
    if match_result:  # 只处理格式完整的行,自动跳过像"Midfielder F..."这种截断内容
        position = match_result.group(1)
        player_name = match_result.group(2)
        rating = float(match_result.group(3))
        processed_data.append([position, player_name, rating])

步骤4:转换为DataFrame

最后把整理好的数据转成DataFrame,设置对应的列名:

df = pd.DataFrame(processed_data, columns=['Position', 'Player', 'Average Form'])
print(df)

运行后你会得到这样的结果:

Position           Player  Average Form
0  Goalkeeper     Manuel Neuer      4.170171
1   Defender       Diego Godin      4.149732
2   Defender    Giorgio Chiellini      4.101152
3   Defender     Thiago Silva      3.933183
4   Defender  Andrea Barzagli      3.851330
5  Midfielder      Arjen Robben      4.805562
6  Midfielder   Alexander Meier      4.510376

这里的关键是用.*?做非贪婪匹配,它会在遇到最后一个空格+数字时停止,刚好完整提取出带空格的球员名,不会把评分的内容拆进去。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:38:05