我有这种 pandas 数据框输出,列位于顶行:
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/