如何在pandas中对DataFrame按分组聚合行,合并同组列值
实现方案
pandas完全可以满足该需求,且针对10万级食品数据的场景具备足够的性能,核心实现代码如下:
import pandas as pd # 示例数据集构造 df = pd.DataFrame(data={"product":["crisps", "crisps", "crisps", "bread", "bread", "bread", "pasta","pasta"], "ingredients": ["potato", "oil", "salt", "flour", "salt", "water", "flour", "eggs"]}) # 按产品分组聚合配料,直接拼接 result_df = df.groupby('product', as_index=False)['ingredients'].agg(','.join)
如果需要对同一产品的重复配料去重,可以使用如下写法:
result_df = df.groupby('product', as_index=False)['ingredients'].agg(lambda x: ','.join(x.unique()))
性能说明
pandas的groupby底层为优化过的C实现,常规10万级产品的聚合操作可在秒级完成。如果数据量达到千万级条目,可提前对product列做排序,能进一步提升分组聚合的效率。
内容的提问来源于stack exchange,提问作者mgg7199
相关产品推荐
相关产品推荐

