
[英]Removing duplicates in python pandas dataframe based in column value condition
[英]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.groupby
、 Groupby.agg
和pd.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.