如何将左侧表格转换为右侧汇总表格?已尝试get dummies函数
从get_dummies到汇总表格的后续操作
假设你的左侧数据是按单条记录存储(比如每行对应一个用户的单个类别标签),右侧是按用户/分组维度汇总各类别的计数,以下是完成转换的具体步骤:
1. 合并分组列与虚拟变量
用get_dummies生成0/1虚拟变量后,把原数据中的分组标识列(比如用户ID、分组名称)和虚拟变量列合并,保留分组维度:
import pandas as pd # 示例:原数据df包含'用户ID'和'类别'列 dummies_df = pd.get_dummies(df['类别']) # 合并分组列与虚拟变量 combined_df = pd.concat([df['用户ID'], dummies_df], axis=1)
2. 按分组列汇总求和
因为虚拟变量中1代表对应类别出现,对分组列执行groupby+sum操作,就能得到每个分组下各类别的总出现次数:
# 按用户ID分组,对所有虚拟变量列求和 summary_table = combined_df.groupby('用户ID').sum().reset_index()
3. 格式调整(按需)
如果需要匹配目标表格的表头或列顺序,可以手动调整:
# 示例:重命名列名 summary_table = summary_table.rename(columns={'类别A': '类别A计数', '类别B': '类别B计数'}) # 调整列顺序 summary_table = summary_table[['用户ID', '类别A计数', '类别B计数']]
示例验证
假设左侧原始数据:
| 用户ID | 类别 |
|---|---|
| 101 | 音乐 |
| 101 | 体育 |
| 102 | 音乐 |
| 103 | 读书 |
经get_dummies合并后:
| 用户ID | 音乐 | 体育 | 读书 |
|---|---|---|---|
| 101 | 1 | 0 | 0 |
| 101 | 0 | 1 | 0 |
| 102 | 1 | 0 | 0 |
| 103 | 0 | 0 | 1 |
分组求和后得到右侧汇总表:
| 用户ID | 音乐 | 体育 | 读书 |
|---|---|---|---|
| 101 | 1 | 1 | 0 |
| 102 | 1 | 0 | 0 |
| 103 | 0 | 0 | 1 |
内容的提问来源于stack exchange,提问作者L Cornwall
相关产品推荐
相关产品推荐

