如何用Pandas将特定格式CSV转换为宽表格式?
Pandas长表转宽表实现方案
步骤1:为原始DataFrame指定列名
因为你读取CSV时设置了header=None,DataFrame的列默认是0,1,2,先给三列命名对应含义:
df.columns = ['file', 'field', 'value']
步骤2:使用pivot转换为宽表
利用Pandas的pivot方法直接完成长表到宽表的转换,指定file作为行标识,field转为表头,value填充对应单元格:
wide_df = df.pivot(index='file', columns='field', values='value').reset_index()
index='file':将file列作为行的唯一标识columns='field':把field列的所有取值转为宽表的表头reset_index():将file从索引列转回普通列,保证它是首列
处理重复值场景
如果同一个文件的同一个字段存在多条记录,pivot会抛出错误,此时可以用pivot_table指定聚合规则,比如取第一个值、求和或均值:
# 示例:取每个file+field组合的第一个值 wide_df = df.pivot_table(index='file', columns='field', values='value', aggfunc='first').reset_index()
内容的提问来源于stack exchange,提问作者Roman Krylov
相关产品推荐
相关产品推荐

