Pandas groupby分组后如何按number排序再拼接inter_type列
你可以先对整个数据集按name和number字段排序后再执行分组拼接逻辑,排序后的同一name分组内的行已经按number的顺序排列,groupby会保留组内行的原有顺序,拼接时自然就能得到符合要求的结果:
df.sort_values(by=['name', 'number'])\ .groupby(['name'])['inter_type']\ .apply(lambda x: ','.join(x))\ .reset_index()
如果你希望更直观地体现「分组内排序」的逻辑,也可以在分组后的apply回调中对每个分组单独排序再拼接:
df.groupby('name')\ .apply(lambda group: ','.join(group.sort_values('number')['inter_type']))\ .reset_index(name='inter_type')
两种方法都能实现需求,前者写法更简洁、执行效率更高,更推荐日常使用。
内容的提问来源于stack exchange,提问作者TigerJ
相关产品推荐
相关产品推荐

