pandas如何实现DataFrame多列值拆分为独立行(逆透视)
实现方法
你需要的是宽表转长表的重构操作,pivot_table的作用是长表转宽表做聚合,和你的需求方向相反,用pandas内置的melt方法即可完成转换,同时支持直接自定义新列名。
核心代码
假设你已有的DataFrame变量名为df,直接运行以下代码即可得到目标结构:
df_transformed = df.melt( id_vars="App", var_name="Title", value_name="Value" )
参数说明
id_vars:指定转换时保留不拆分的标识列,这里传入App,转换后每个App值会对应拆分出的多行数据var_name:设置拆分后存储原列名的新列名称,这里直接传入你需要的Titlevalue_name:设置拆分后存储原单元格数值的新列名称,这里直接传入你需要的Value
效果验证
转换后输出的df_transformed结构和你给出的目标结构完全一致:
| App | Title | Value |
|---|---|---|
| A | Downloads | 123 |
| A | Permissions | 56 |
| B | Downloads | 89 |
| B | Permissions | 12 |
如果转换后行顺序和你的预期不符,可以追加排序逻辑调整:
df_transformed = df_transformed.sort_values(by=["App", "Title"], ignore_index=True)
内容的提问来源于stack exchange,提问作者user12270555
相关产品推荐
相关产品推荐

