Python 根据列中的值组合熊猫中的两行并创建新类别

Python 根据列中的值组合熊猫中的两行并创建新类别,python,pandas,Python,Pandas,我最感兴趣的是如何以一种优秀的方式完成这项工作 在本例中,来自大阪的数据Tim有两个水果 import pandas as pd data = {'name': ['Susan', 'Tim', 'Tim', 'Anna'], 'fruit': ['Apple', 'Apple', 'Banana', 'Banana'], 'town': ['Berlin', 'Osaka', 'Osaka', 'Singabpur']} df = pd.DataFrame(

我最感兴趣的是如何以一种优秀的方式完成这项工作

在本例中,来自大阪的数据
Tim
有两个
水果

import pandas as pd

data = {'name': ['Susan', 'Tim', 'Tim', 'Anna'],
        'fruit': ['Apple', 'Apple', 'Banana', 'Banana'],
        'town': ['Berlin', 'Osaka', 'Osaka', 'Singabpur']}

df = pd.DataFrame(data)
print(df)
结果

    name   fruit       town
0  Susan   Apple     Berlin
1    Tim   Apple      Osaka
2    Tim  Banana      Osaka
3   Anna  Banana  Singabpur
我调查了这些数据,发现其中一个人有多种水果。我想为它创建一个新的“类别”,名为香蕉和水果(或其他)。关键是
Tim
的其他字段的值相等

df.groupby(['name', 'town', 'fruit']).size()
我不确定这是否是探索此数据集的正确方法。背后的逻辑问题是,一些人+城镇组合是否有多重结果

因此,我想要这个

    name   fruit             town
0  Susan   Apple             Berlin
1    Tim   Apple&Banana      Osaka
2   Anna   Banana            Singabpur
使用:

new_df

    name       town         fruit
0  Susan     Berlin         Apple
1    Tim      Osaka  Apple&Banana
2   Anna  Singabpur        Banana

我总是忘了本月排名前十的gg和
sort=False+1.
new_df = (
    df.groupby(['name', 'town'], as_index=False, sort=False)
        .agg(fruit=('fruit', '&'.join))
)
    name       town         fruit
0  Susan     Berlin         Apple
1    Tim      Osaka  Apple&Banana
2   Anna  Singabpur        Banana