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

如何将带压缩列行名的DataFrame与展开DataFrame关联拆分值列

实现方法

方法1:关联合并实现(符合要求的关联操作)

核心思路是先把压缩表按不同列名拆分为独立的映射表,再分别和展开表做左连接匹配:

import pandas as pd

# 拆分压缩表生成col1、col2的独立映射表
col1_mapping = packed_df[packed_df['column_name'] == 'col1'][['row_name', 'value']].rename(
    columns={'row_name': 'col1', 'value': 'value_col1'}
)
col2_mapping = packed_df[packed_df['column_name'] == 'col2'][['row_name', 'value']].rename(
    columns={'row_name': 'col2', 'value': 'value_col2'}
)

# 两次左连接完成值匹配
result_df = unpacked_df.merge(col1_mapping, on='col1', how='left')\
                       .merge(col2_mapping, on='col2', how='left')

运行后得到的result_df就是你需要的结果。

方法2:字典映射实现(性能更优,适合大数据量场景)

如果不想用多次关联,可以先把压缩表转为字典映射,直接匹配赋值:

# 生成列值到value的映射字典
value_dict = packed_df.groupby('column_name').apply(
    lambda x: dict(zip(x['row_name'], x['value']))
).to_dict()

# 直接为展开表新增两列
unpacked_df['value_col1'] = unpacked_df['col1'].map(value_dict['col1'])
unpacked_df['value_col2'] = unpacked_df['col2'].map(value_dict['col2'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:54:03