2016-12-03 205 views
1

我有以下格式重塑熊猫据帧分组变量

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

我要重塑数据帧的格式如下

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

这样我可以比较两个名称的熊猫数据帧。对于此要求,我无法使用pd.pivotpd.pivottable。 应该相当简单。请,你能建议如何做到这一点?

回答

4

您可以使用cumcountpivot,最后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 Jimmy'改为'1 1 Jimmy'(前4个空格)。 – jezrael