pandas:根据所有单元格中存在的多个单词拆分一列

pandas: split a column on multiple words present in all cells

我想将此数据框中名称上的列拆分为两列,

import pandas as pd
import re
df1 = pd.DataFrame({'Name': ['Steve _ (ICANA) Smith', 'Joe _ (ICANA) Nadal',
                       'Roger _ (ICANA) Federer_blu']})

我想要的输出是:

                          Name  First    Last
0        Steve _ (ICANA) Smith  Steve    Smith
1          Joe _ (ICANA) Nadal  Joe      Nadal
2  Roger _ (ICANA) Federer_blu  Roger    Federer_blu

所以我想去掉“_ (ICANA)”。使用拆分,我已经完成了,

df1[['First','last']] = df1.Name.str.split(r"\b _ (ICANA)\b", expand=True)

其中returns以下错误,

ValueError: Columns must be same length as key

你的正则表达式不正确,你需要转义括号:

df1[['First','last']] = df1.Name.str.split(r"\s*_ \(ICANA\)\s*", expand=True)

但是,为避免出现任何问题,最好仍然使用 extract,这将确保固定数量的输出列:

df1[['First','last']] = df1.Name.str.extract(r'(\w*)\s*_ \(ICANA\)\s*(\w*)')