2017-03-18 14 views
2

で行の値を分離、列は一番上の行にある:どのように私はパンダのデータフレームの出力のこの種を持っているパンダのデータフレーム

Gender,Name, Age 
Male, Matt, 57 
Male, Jack, 42 
Male, David, 31 
Male, John, 28 
Male, Tim, 51 

Gender,Name 
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

関連する問題