Python Pandas dataframe:按一列分组,但按其他列连接和聚合

Python Pandas dataframe:按一列分组,但按其他列连接和聚合,python,pandas,Python,Pandas,如何打开以下输入数据(从Excel文件馈送的数据帧): 为此: ID Category Speaker Price 334014 Real Estate Perspectives Tom Smith, Janet Brown 100 334014 E&E Tom Smith, Janet Brown 200 所以基本上我想按类别分组,连接扬

如何打开以下输入数据(从Excel文件馈送的数据帧):

为此:

ID      Category                    Speaker                 Price
334014  Real Estate Perspectives    Tom Smith, Janet Brown  100
334014  E&E                         Tom Smith, Janet Brown  200   
所以基本上我想按类别分组,连接扬声器,但不是总价格


我用Pandas
dataframe.groupby()
.agg()
尝试了不同的方法,但没有成功。也许有更简单的纯Python解决方案?

有两种可能的解决方案-通过多列聚合和
连接:

dataframe.groupby(['ID','Category','Price'])['Speaker'].apply(','.join)
或者只需要聚合
Price
列,然后需要通过
first
last
聚合所有列:

dataframe.groupby('Price').agg({'Speaker':','.join, 'ID':'first', 'Price':'first'})
试试这个

df.groupby(['ID','Category'],as_index=False).agg(lambda x : x if x.dtype=='int64' else ', '.join(x))

@哈夫潘-那么你是选民,嗯…@jezrael,对不起,但我想你应该知道这个问题是不是被欺骗了。我因回答欺骗而多次被否决。没什么私事。可能是个骗局,不是那个问题的骗局。没有包括如何得到他想要的价格栏。可能必须是一个组合dupeHmm,不确定在这种情况下协议是什么。无论如何,我会支持耶斯雷尔的回答。谢谢@user3483203@harvpan如果你能找到一个问题,首先我将以重复的形式结束。
df.groupby(['ID','Category'],as_index=False).agg(lambda x : x if x.dtype=='int64' else ', '.join(x))