如何拆分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两列,示例如下:
| Name | Player_Name | Team | Age |
|---|---|---|---|
| Conor Bradley Liverpool | Conor Bradley | Liverpool | 20 |
| Thiago Alcântara Liverpool | Thiago Alcântara | Liverpool | 32 |
| Ryan One Sheff Utd | Ryan One | Sheff Utd | 17 |
为啥你的尝试没成功?
你用了split(','),但数据里根本没有逗号当分隔符,当然拆不开。而rsplit(' ', n=1)专门针对这种"球员名(含空格)+ 空格 + 球队名"的结构,只拆最后一个空格,完美匹配你的数据格式。
内容的提问来源于stack exchange,提问作者matsalt
相关产品推荐
相关产品推荐

