2017-03-18 55 views
2

我有这种熊猫据帧输出,列在最上面一行:分离行值

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 

如何我可以将年龄值从“名称”列更改为名称为“年龄”的新列?

+1

'马特57'是一个字符串? – Denziloe

回答

1
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())))) 

天真一次测试时

enter image description here

1
split_values = df['Name'].str.split(' ', expand=True) 
df['Name'] = split_values.iloc[:, 0] 
df['Age'] = split_values.iloc[:, 1] 
print(df) 

    Gender Name Age 
0 Male Matt 57 
1 Male Jack 42 
2 Male David 31 
3 Male John 28 
4 Male Tim 51 

甚至机:

split_values = df['Name'].str.split(' ', expand=True) 
for ii, col_name in enumerate(['Name', 'Age']): 
    df[col_name] = split_values.iloc[:, ii] 
+0

看起来不错+1 – piRSquared