Pandas 通过多个字符串分隔符将列拆分为多列

Shu*_*m R 5 python dataframe python-3.x pandas

我有一个数据框:

id    info
1     Name: John Age: 12 Sex: Male
2     Name: Sara Age: 22 Sex: Female
3     Name: Mac Donald Age: 32 Sex: Male
Run Code Online (Sandbox Code Playgroud)

我希望将信息列拆分为 3 列,以便获得最终输出:

id  Name      Age   Sex
1   John      12   Male
2   Sara      22   Female
3 Mac Donald  32   Male
Run Code Online (Sandbox Code Playgroud)

我尝试使用熊猫拆分功能。

df[['Name','Age','Sex']] = df.info.split(['Name'])
Run Code Online (Sandbox Code Playgroud)

我可能需要多次执行此操作才能获得所需的输出。

有没有更好的方法来实现这一目标?

PS:信息列也包含NaN

Rak*_*esh 6

对命名组使用正则表达式。

前任:

df = pd.DataFrame({"Col": ['Name: John Age: 12 Sex: Male', 'Name: Sara Age: 22 Sex: Female', 'Name: Mac Donald Age: 32 Sex: Male']})
df = df['Col'].str.extract(r"Name:\s*(?P<Name>[A-Za-z\s]+)\s*Age:\s*(?P<Age>\d+)\s*Sex:\s*(?P<Sex>Male|Female)") # Or if spacing is standard use df['Col'].str.extract(r"Name: (?P<Name>[A-Za-z\s]+) Age: (?P<Age>\d+) Sex: (?P<Sex>Male|Female)")
print(df)
Run Code Online (Sandbox Code Playgroud)

输出:

          Name Age     Sex
0        John   12    Male
1        Sara   22  Female
2  Mac Donald   32    Male
Run Code Online (Sandbox Code Playgroud)