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*)')
我想将此数据框中名称上的列拆分为两列,
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*)')