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

如何使用pandas对dataframe进行透视转换得到目标结构

Pandas数据框转换实现方案

核心思路通过长宽表转换两步实现,先熔解原宽表为长格式过滤空值,再透视为目标宽格式即可。

首先构造测试用的原始df1(可直接跳过这步用你自己的df1):

import pandas as pd
import numpy as np

df1 = pd.DataFrame({
    'Num': ['P1', 'P2', 'P3'],
    'B1': ['V1', 'V1', np.nan],
    'B2': ['V2', np.nan, 'V2'],
    'B3': [np.nan, 'V2', np.nan],
    'B4': [np.nan, np.nan, 'V1']
})

核心转换代码:

# 转长表,保留Num、B列名、对应值三个字段,删除空值行
df_long = df1.melt(id_vars='Num', var_name='b_column', value_name='v_value').dropna()
# 长表转目标宽表
df2 = df_long.pivot(index='v_value', columns='Num', values='b_column').reset_index().rename_axis(columns=None)
# 可选:和示例输出完全对齐,把第一列列名设为空
df2 = df2.rename(columns={'v_value': ''})

执行print(df2)即可得到你需要的结果:

P1  P2  P3
0  V1  B1  B1  B4
1  V2  B2  B3  B2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:57:01