熊猫数据框:按一列分组,但由其他列串联和聚合

bar*_*icz 1 python pandas

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

ID      Category                    Speaker     Price
334014  Real Estate Perspectives    Tom Smith   100
334014  E&E                         Tom Smith   200
334014  Real Estate Perspectives    Janet Brown 100
334014  E&E                         Janet Brown 200
Run Code Online (Sandbox Code Playgroud)

到这个:

ID      Category                    Speaker                 Price
334014  Real Estate Perspectives    Tom Smith, Janet Brown  100
334014  E&E                         Tom Smith, Janet Brown  200   
Run Code Online (Sandbox Code Playgroud)

因此,我想按类别分组,将发言人串联起来,但不汇总价格。

我对Pandas dataframe.groupby()和尝试了不同的方法.agg(),但无济于事。也许有更简单的纯Python解决方案?

jez*_*ael 5

有2种可能的解决方案-通过多个列进行聚合,并且join

dataframe.groupby(['ID','Category','Price'])['Speaker'].apply(','.join)
Run Code Online (Sandbox Code Playgroud)

或者只需要汇总Price列,则必须通过first或汇总所有列last

dataframe.groupby('Price').agg({'Speaker':','.join, 'ID':'first', 'Price':'first'})
Run Code Online (Sandbox Code Playgroud)