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值
对命名组使用正则表达式。
前任:
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)
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |