首页 > 解决方案 > 如何将单个 Pandas 数据框列的内容拆分为多个新列

问题描述

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

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

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

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 列中的数据是一个对象。

(df.dtypes)

Team       int64
Record    object
dtype: object

我该怎么做呢?会是某种正则表达式,然后是列表理解来遍历 Record 列的每一行吗?我想在一个数据框中为大约 400 个团队执行此操作。在此先感谢您的帮助。

标签: pythonregexpandasdataframelist-comprehension

解决方案


使用 pandas 字符串方法,特别是str splitstr get,并将提取物分配给新列:

    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

推荐阅读