繁体   English   中英

Python Pandas Dataframe 添加基于重复的额外列 [重复]

[英]Python Pandas Dataframe adding extra column based on duplicates [duplicate]

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

水果
香蕉 杰克
香蕉 保罗
萝卜 南希
萝卜 悉尼
萝卜

请注意,“人员”列将始终是唯一的。 我的目标是用第三或第四列得到这样的东西:

水果 人1 人2 人3
香蕉 杰克 保罗
萝卜 南希 悉尼

我试过这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM