Pandas如何拆分转换DataFrame行值为列并排序重构数据表
pandas按行存储字段标识转独立列实现方法
问题场景
现有如下结构的pandas DataFrame,第0列存储字段标识,需要将行存储的字段值转换为独立列,重构后支持直接通过列名索引数据:
原始DataFrame结构:
0 1 0 col_a 0 1 col_b 2 2 col_c 3 3 col_a 4 4 col_b 5 5 col_c 6
目标输出结构:
col_a col_b col_c 0 0 2 3 1 4 5 6
注:你提供的目标输出样例中第一行col_a值为1属于笔误,按原始数据对应值应为0
实现代码
你的数据属于固定字段循环排列的长表结构,只需要先给每组数据生成分组编号,再做透视转换即可,无需依赖其他复杂方法:
import pandas as pd # 替换为你自己的原始DataFrame变量名 # 方法1:已知每3个字段为一组循环时使用 df['group_id'] = df.groupby(0).cumcount() # 方法2:通用写法,无需手动指定每组字段数,自动按字段首次出现位置分组 # df['group_id'] = (df[0] == df[0].iloc[0]).cumsum() - 1 # 透视转换为宽表 result = df.pivot(index='group_id', columns=0, values=1) # 重置索引、清理列名 result = result.reset_index(drop=True) result.columns.name = None
执行后result即为你需要的结构化DataFrame,可直接通过result['col_a']这类方式按列名索引数据。
内容的提问来源于stack exchange,提问作者testerboy22
相关产品推荐
相关产品推荐

