Python Pandas Dataframe 根据重复添加额外的列

Python Pandas Dataframe adding extra column based on duplicates

今天我一直致力于合并和编辑数据框,但一直被一个非常具体的部分所困。我有一列包含某些水果的名称,然后是这样的人的名称:

Fruit Person
Banana Jake
Banana Paul
Carrot Nancy
Carrot Sydney
Carrot Jane

请注意,“人员”列始终是唯一的。我的目标是在第三或第四列中获得类似这样的内容:

Fruit Person1 Person2 Person3
Banana Jake Paul
Carrot Nancy Sydney Jane

我试过这个:

first = df.drop_duplicates(subset=['Zone','District','Area'],keep='First',inplace = True)
second = df.drop_duplicates(subset=['Zone','District','Area'],keep='Last',inplace = True)

稍后将它们合并在一起,但这不会得到中间的那些,例如我的示例中的“Syndey”。我找到了这个:

但是我不太理解groupby部分。我希望这对您有所帮助,感谢您的时间和耐心。

使用df.groupbyGroupby.aggpd.concat

In [890]: df1 = df.groupby('Fruit').agg(list).reset_index()
In [905]: res = pd.concat([df1.Fruit, pd.DataFrame(df1.Person.tolist(), index=df1.index)], 1)

In [906]: res
Out[906]: 
    Fruit      0       1     2
0  Banana   Jake    Paul  None
1  Carrot  Nancy  Sydney  Jane
df = df.assign(_=lambda x: 'Person'+(x.groupby('Fruit').transform(
    'cumcount')+1).astype(str)).pivot(columns='_', index='Fruit')
print(df)

结果:

        Person                
_      Person1 Person2 Person3
Fruit                         
Banana    Jake    Paul     NaN
Carrot   Nancy  Sydney    Jane