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

如何将pandas交叉表格式的DataFrame转换为指定长格式

实现方案

这个需求属于宽表转长表场景,直接用pandas的melt方法就能快速实现,pivot是长表转宽表的方法,本次场景不需要用到,具体操作步骤如下:

步骤1:预处理原始数据

先把原始数据里的字符串格式'NaN'替换为pandas可识别的空值,方便后续过滤:

import pandas as pd
import numpy as np

# 构造原始DataFrame
d = {'Country': ['USA', 'France', 'Germany'], 'USA': ['NaN', 2, 5], 'France': [3, 'NaN', 7],  'Germany': [3.5, 4, 'NaN']}
df = pd.DataFrame(data=d)
# 替换字符串NaN为真实空值
df = df.replace('NaN', np.nan)

步骤2:用melt重塑表格

result = df.melt(
    id_vars='Country',  # 保持Country列不动作为第一维度
    var_name='Country2', # 原来的列名转为新列Country2,作为第二维度
    value_name='Value'   # 单元格数值存入Value列
).dropna().sort_values('Country').reset_index(drop=True) # 过滤对角空值、按Country排序、重置索引

验证结果

打印result即可得到你需要的输出:

Country Country2  Value
0      USA   France    3.0
1      USA  Germany    3.5
2   France      USA    2.0
3   France  Germany    4.0
4  Germany      USA    5.0
5  Germany   France    7.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:15:02