Python Pandas dataframe:按一列分组,但按其他列连接和聚合
如何打开以下输入数据(从Excel文件馈送的数据帧): 为此: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 所以基本上我想按类别分组,连接扬
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))