2016-12-03 8 views
1

私は次の形式私は再形成パンダデータフレームのグループ化変数は

ID Name_1 Name_2 
0 1  Jim Jimmy 
1 2 Mark Marko 
2 3 Sergi Sergi 

だから私は二つの名前を比較することができ、次の形式でデータフレームを再構築したい

ID Name 
0 1 Jim 
1 1 Jimmy 
2 2 Mark 
3 2 Marko 
4 3 Sergi 
4 3 Sergi 

でパンダのデータフレームを持っています。この要件にはpd.pivotまたはpd.pivottableを使用できません。 かなりシンプルでなければなりません。どうしたらいいですか?

答えて

4

あなたは、列名にpivotcumcount、最後add_prefixを使用することができます。

df['groups'] = df.groupby('ID').cumcount() + 1 
df = df.pivot(index='ID', columns='groups', values='Name').add_prefix('Name_') 
print (df) 
groups Name_1 Name_2 
ID     
1   Jim Jimmy 
2  Mark Marko 
3  Sergi Sergi 

groupbyunstackのもう一つの解決策、最後add_prefix列名に:

df1 = df.groupby('ID')["Name"] \ 
     .apply(lambda x: pd.Series(x.values)) \ 
     .unstack(1) \ 
     .rename(columns=lambda x: x+1) \ 
     .add_prefix('Name_') 
print (df1) 
    Name_1 Name_2 
ID    
1  Jim Jimmy 
2 Mark Marko 
3 Sergi Sergi 
+0

働いたこと。ありがとうございました! – Spartan07

+0

もう一度質問がありますか?私はパンダのためのstackoverflowを使用することに新しいです。質問を投稿する際にデータフレームをどのように表現するか教えていただけますか? – Spartan07

+1

したがって、ネット行の必要性は、「1 1ジミー」から「1 1ジミー」(4スペース前)に変更する必要があります。 – jezrael

関連する問題