如何用Pandas按第二列值重塑[N×2]结构的表格?
用Pandas重塑DataFrame的实现方法
假设你的table是包含diag(0/1值)和al(0.0-4.0值)的两列DataFrame,要将其重塑为以al的不同取值为列名、每列对应该al值下所有diag值的表格,可通过以下两种方法实现:
方法一:添加组内索引后Pivot
- 先给每个
al分组内的记录添加组内序号,确保每个diag在对应分组中有唯一的行位置:
import pandas as pd # 给每个al分组的元素添加组内行索引 table['row_idx'] = table.groupby('al').cumcount()
- 使用
pivot方法完成重塑:
# 重塑为目标表格 result = table.pivot(index='row_idx', columns='al', values='diag')
如果不同al分组的diag数量不一致,结果中会出现NaN,可通过fillna()填充(比如result.fillna(0, inplace=True))。
方法二:GroupBy结合Apply直接转换
通过分组后将每个组的diag转为Series,再通过unstack展开为列:
result = table.groupby('al')['diag'].apply(pd.Series).unstack(0)
这种方法会自动生成组内的行索引,最终效果和方法一一致。
内容的提问来源于stack exchange,提问作者Arnold
相关产品推荐
相关产品推荐

