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

如何拆分DataFrame列中球员姓名与球队名并生成新列?

问题描述

我有两个技术需求:

  • 如何拆分DataFrame列中的字符串?
  • 如何在DataFrame中拆分Name列内的球员姓名与球队名,生成对应的新列?

我曾尝试用.split(',')方法拆分,但球员姓名和球队名之间没有逗号,所以失败了。相关的DataFrame数据和尝试的代码如下:

DataFrame数据:

Name  Age    Position   Apps  Mins Tackles Inter Fouls Offsides Clear  Drb Blocks OwnG  Rating
0         Conor Bradley Liverpool   20        D(R)      5   386     3.0   0.6   1.2      0.2   1.2  1.4      -    -    7.72
1             Bukayo Saka Arsenal   22        D(L)     25  2139     2.0   0.4   1.2        -   0.5    1    0.1    -    7.71
2                  Rodri Man City   27        D(C)     23  1990     2.1   0.9   1.3        -   1.4  0.8    0.3    -    7.58
3    Michael Olise Crystal Palace   22     AM(CLR)   8(3)   755     1.3   0.5   0.6        -   0.7  1.1      -    -    7.54
4         Mohamed Salah Liverpool   31     AM(CLR)  20(1)  1790     0.6   0.1   0.3        -     -  0.6      -    -    7.48
570    Thiago Alcântara Liverpool   32        M(C)   0(1)     5       -     -     -        -     -    -      -    -    5.89
571         Anass Zaroury Burnley   23       AM(L)   1(5)   149     0.2     -   0.7        -   0.2  0.7      -    -    5.85
572            Ryan One Sheff Utd   17  Midfielder   0(1)     7       -     -     -        -     -    -      -    -    5.81
573            Luke Harris Fulham   18       AM(C)   0(1)    74       1     -     2        -     -    1      -    -    5.73
574       Andrei Radu Bournemouth   26          GK      2   180       -     -     -        -   0.5    -      -    -    5.70

尝试的代码:

temp = data2['Player.1'].str.split(',')

for i in range(len(temp)):
    n = temp[i][0]
    name.append(n)
data2['Name']= name

for i in range(len(temp)):
    a = temp[i][1]
    age.append(a)
data2['Age']= age
解决方案

1. DataFrame列字符串拆分的通用方法

Pandas里拆分字符串列主要用str.split()方法,根据需求调整参数即可:

  • 按固定符号拆分:比如df['列名'].str.split('分隔符')
  • 限制拆分次数:用n=数字指定最多拆几次,比如str.split(' ', n=1)只拆一次
  • 直接拆成多列:加expand=True,就能把拆分结果直接变成新列,不用手动循环赋值

2. 拆分Name列的球员名和球队名

观察你的Name列数据,球员名可能带空格(比如Thiago Alcântara),但球队名肯定是最后一个空格后面的部分,所以用str.rsplit()从右侧开始拆一次,就能精准分开:

代码实现

# 从右侧拆分1次,直接扩展为两列
df[['Player_Name', 'Team']] = df['Name'].str.rsplit(' ', n=1, expand=True)

拆分效果

执行后会新增Player_Name和Team两列,示例如下:

NamePlayer_NameTeamAge
Conor Bradley LiverpoolConor BradleyLiverpool20
Thiago Alcântara LiverpoolThiago AlcântaraLiverpool32
Ryan One Sheff UtdRyan OneSheff Utd17

为啥你的尝试没成功?

你用了split(','),但数据里根本没有逗号当分隔符,当然拆不开。而rsplit(' ', n=1)专门针对这种"球员名(含空格)+ 空格 + 球队名"的结构,只拆最后一个空格,完美匹配你的数据格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:47:05