You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对pandas DataFrame使用unstack实现指定行列转换效果?

要实现你需要的长表转宽表效果,按以下方式正确使用unstack即可:

核心逻辑

unstack是对DataFrame的多级索引做层级展开,你之前调用失败大概率是没有提前把需要作为行、列维度的字段设置为多级索引。

实现代码

首先构造示例数据(你可以跳过这步直接用你自己的df):

import pandas as pd

df = pd.DataFrame({
    'job_Id': [1,2,3,1,2,3],
    'Company_Name': ['X','X','X','y','y','y'],
    'Min_Salary': [50,12,45,63,75,25]
})

方法1:用unstack实现

df_output = df.set_index(['job_Id', 'Company_Name'])['Min_Salary']\
              .unstack(level='Company_Name')\
              .reset_index()

方法2:用pivot实现(宽表转换更直观的写法)

如果你不想记unstack的索引逻辑,直接用pandas内置的pivot方法做宽表转换更不容易出错:

df_output = df.pivot(
    index='job_Id',
    columns='Company_Name',
    values='Min_Salary'
).reset_index()

如果需要和你给出的示例格式完全对齐,去掉列顶部的Company_Name索引标记,额外加一行代码即可:

df_output.columns.name = None

两种方法调整后得到的df_output都和你给出的预期结果完全一致。


内容的提问来源于stack exchange,提问作者James Lin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:57:01