如何将pd.DataFrame行中的分类条目转换为列?
解决方法:将长格式DataFrame转换为宽格式
你可以用Pandas的pivot或pivot_table函数快速实现这种格式转换,具体步骤如下:
1. 基础转换(无重复条目)
如果每个id+name的组合是唯一的,直接用pivot函数:
import pandas as pd # 假设已从JSON文件读取得到DataFrame df # df = pd.read_json('your_data.json') # 执行透视转换 wide_df = df.pivot( index=['sl no.', 'id', 'date'], # 保留为行标识的列 columns='name', # 要转为列的分类字段 values='value' # 填充到新列的值 ).reset_index() # 清理列名层级 wide_df.columns.name = None
转换后得到的wide_df格式就和你期望的一致:
sl no. id Math Phy date 1 101 90 87 - 3 201 85 93 -
2. 处理重复条目
如果存在同一个学生同一科目有多条记录的情况,用pivot_table配合聚合函数处理:
wide_df = df.pivot_table( index=['sl no.', 'id', 'date'], columns='name', values='value', aggfunc='mean' # 可根据需求替换为sum、first、max等 ).reset_index() wide_df.columns.name = None
内容的提问来源于stack exchange,提问作者Snak
相关产品推荐
相关产品推荐

