我有这种pandas dataframe输出,列在第一行:
Gender,Name
Male, Matt 57
Male, Jack 42
Male, David 31
Male, John 28
Male, Tim 51
我的目标是获得这种输出:
Gender,Name, Age
Male, Matt, 57
Male, Jack, 42
Male, David, 31
Male, John, 28
Male, Tim, 51
如何将年龄值从“名称”列更改为名称为“年龄”的新列?
最佳答案
df.drop('Name', 1).join(
df.Name.str.split().apply(pd.Series, index=['Name', 'Age']))
Gender Name Age
0 Male Matt 57
1 Male Jack 42
2 Male David 31
3 Male John 28
4 Male Tim 51
这也给你同样的事情
df.drop('Name', 1).join(
df.Name.str.extract('(?P<Name>\S+)\s+(?P<Age>\S+)', expand=True))
或迈向怪异的方向
df.assign(
**dict(zip(
('Name', 'Age'),
zip(*np.core.defchararray.split(df.Name.values.astype(str), ' ').tolist()))))
天真的时间测试
关于python - 在pandas数据框中分隔行值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42869364/