我有这种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数据框中分隔行值-LMLPHP

关于python - 在pandas数据框中分隔行值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42869364/

10-12 18:13