重复的行合并为一行,在pandas中添加新列

时间:2018-12-14 02:48:59

标签: python pandas

我有这个数据

| id | name | action|

| 1  | user1| action1|

| 2  | user2| action1|

| 3  | user1| action56|

| 4  | user3| action49|

| 5  | user1| action649|

我想得到这个:

| id | name | action | action2 | action3 |

| 1  | user1| action1| action56| action649|

| 2  | user2| action1|

| 4  | user3| action49|

我已经知道如何获取第一个重复项和最后一个重复项,但是我不知道如何“转换”数据框

2 个答案:

答案 0 :(得分:2)

在使用pivot + groupby创建密钥之后,这是一个cumcount问题

df.assign(key=df.groupby('name').cumcount()+1).pivot('name','key','action').add_prefix('action_')
key    action_1  action_2   action_3
name                                
user1   action1  action56  action649
user2   action1      None       None
user3  action49      None       None

答案 1 :(得分:1)

您需要groupby.transform

df['action']=df.groupby('name')['action'].transform(','.join)

df=df.drop_duplicates('name')
print(df)
#id name    action
#0  1   user1   action1, action56, action649
#1  2   user2   action1
#3  4   user3   action49