使用 Pandas groupby 连接多行字符串并从逗号分隔的单元格中删除重复项

Sri*_*s K 3 pandas pandas-groupby

我有以下数据并尝试按唯一 id 进行聚合,并且需要在各自列的一个单元格中获取唯一名称、唯一产品、唯一价格

\n\n
Unique_id   Name    Product Price\n101         ABC Ltd A       100\n102         JKL Ltd B       200\n101         ABC Ltd B       200\n102         JKL US  B       200\n103         IHJ Ltd A       100\n102         JKL UK  C       300\n103         IHJ US  A       100\n101         ABC US  A       100\n
Run Code Online (Sandbox Code Playgroud)\n\n

可以获得以下代码,但它不符合我的要求。

\n\n
df1 = df.groupby(' Unique_ID'').agg({'Product'  : 'first', \xe2\x80\x98Price\xe2\x80\x99  : 'first', \n          'Name\xe2\x80\x99:'first'.join}).reset_index()\n
Run Code Online (Sandbox Code Playgroud)\n\n

下面是我试图获得的输出,但我无法获得正确的代码。

\n\n
Unique_id   Name               Product   Price\n101         ABC Ltd, ABC US    A, B      100\n102         JKL Ltd, JKL UK    B, C      200\n103         IHJ Ltd, IHJ US    A         100\n
Run Code Online (Sandbox Code Playgroud)\n\n

谢谢。

\n

Hen*_*Yik 5

使用以下方法对当前方法进行轻微修改lambda

print (df.groupby('Unique_id').agg({'Product': lambda d: ", ".join(set(d)),
                                    'Price' : 'first',
                                    'Name':lambda d: ", ".join(set(d))}).reset_index())

   Unique_id Product  Price                   Name
0        101     A,B    100         ABC Ltd,ABC US
1        102     C,B    200  JKL Ltd,JKL UK,JKL US
2        103       A    100         IHJ US,IHJ Ltd
Run Code Online (Sandbox Code Playgroud)