如何按group_id的唯一值合并多列数据,实现分组单行展示?
按group_id合并多列数据的解法
原始数据
| group_id | food_1 | food_2 | food_3 |
|---|---|---|---|
| 1 | 1 | 0 | 0 |
| 1 | 0 | 2 | 0 |
| 1 | 0 | 0 | 6 |
| 2 | 2 | 0 | 0 |
| 2 | 0 | 1 | 0 |
| 2 | 0 | 0 | 5 |
目标结果
合并后每个group_id对应一行,最终数据如下:
| group_id | food_1 | food_2 | food_3 |
|---|---|---|---|
| 1 | 1 | 2 | 6 |
| 2 | 2 | 1 | 5 |
方法1:Python Pandas实现
利用分组求和逻辑,同一group_id下各food列仅存在一个非0值,求和即可保留有效数据:
import pandas as pd # 构造原始数据(或从文件读取) df = pd.DataFrame({ 'group_id': [1,1,1,2,2,2], 'food_1': [1,0,0,2,0,0], 'food_2': [0,2,0,0,1,0], 'food_3': [0,0,6,0,0,5] }) # 按group_id分组并对其余列求和,重置索引 merged_df = df.groupby('group_id').sum().reset_index() print(merged_df)
方法2:SQL实现
如果数据存储在数据库中,可通过分组聚合查询完成合并:
SELECT group_id, SUM(food_1) AS food_1, SUM(food_2) AS food_2, SUM(food_3) AS food_3 FROM your_table_name GROUP BY group_id;
替换your_table_name为实际表名,执行后即可得到合并结果。
内容的提问来源于stack exchange,提问作者Lyra Johnson
相关产品推荐
相关产品推荐

