首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将单个Pandas Dataframe列的内容拆分为多个新列

如何将单个Pandas Dataframe列的内容拆分为多个新列
EN

Stack Overflow用户
提问于 2020-04-11 09:14:18
回答 2查看 49关注 0票数 1

假设我有两个运动队的记录数据。

代码语言:javascript
复制
d = {'Team': [1, 2], 'Record': ['5-0', '3-2']}
df = pd.DataFrame(data=d)
df

    Team    Record
0     1      5-0
1     2      3-2

我希望将记录拆分并附加到每个团队的新列中,如下所示:

代码语言:javascript
复制
d = {'Team': [1, 2], 'Record': ['5-0', '3-2'], 'Wins': [5, 3], 'Losses' : [0, 2]}
df = pd.DataFrame(data=d)
df


  Team  Record  Wins    Losses
0   1    5-0     5         0
1   2    3-2     3         2

由于连字符的缘故,Records列中的数据是一个对象。

代码语言:javascript
复制
(df.dtypes)

Team       int64
Record    object
dtype: object

我该怎么做呢?会不会是某种正则表达式,然后是遍历记录列的每一行的列表理解?我想在一个数据帧中为大约400个团队做这件事。提前感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-11 09:25:48

使用pandas字符串方法,特别是str splitstr get,并将解压缩包assign到新列:

代码语言:javascript
复制
    df = (df
         .assign(Wins= df.Record.str.split('-').str.get(0),
                 Losses = df.Record.str.split('-').str.get(-1)
            )
          )

df


  Team  Record  Wins    Losses
0   1    5-0     5         0
1   2    3-2     3         2
票数 1
EN

Stack Overflow用户

发布于 2020-04-11 09:42:53

如果数据表现良好,您可以将Series.str.extract与命名捕获组(Number)-(Number)一起使用。然后再向后收缩。

代码语言:javascript
复制
pd.concat([df, df['Record'].str.extract(r'(?P<Wins>\d)-(?P<Losses>\d)')], axis=1)
#   Team Record Wins Losses
#0     1    5-0    5      0
#1     2    3-2    3      2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61150914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档