重塑数据帧分组变量

2024-04-28 04:44:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧,格式如下

   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满足此要求。 应该很简单。拜托,你能建议怎么做吗?你知道吗


Tags: 数据nameid格式名字建议pdpivot
1条回答
网友
1楼 · 发布于 2024-04-28 04:44:38

可以将^{}^{}、last^{}一起用于列名:

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

另一个解决方案是^{}^{},最后^{}到列名:

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

相关问题 更多 >