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

如何将Pandas DataFrame转换为指定的长表格式?

问题描述

我有如下Pandas DataFrame:

city,temp,real_feel
Los Angeles,0.97,-4.05
London,2.34,-3.18
Amsterdam,6.05,1.63
Rome,4.59,1.29
Lisabon,15.48,15.15
Berlin,2.38,-1.65

尝试用pivot相关方法未能实现转换,需要将其转为如下格式:

city,type,value
Los Angeles,temp,0.97
Los Angeles,real_feel,-4.05
London,temp,2.34
London,real_feel,-3.18
Amsterdam,temp,6.05
Amsterdam,real_feel,1.63
Rome,temp,4.59
Rome,real_feel,1.29
Lisabon,temp,15.48
Lisabon,real_feel,15.15
Berlin,temp,2.38
Berlin,real_feel,-1.65
解决方案

你需要使用Pandas的melt()方法——这是专门将宽表转换为长表的工具,和pivot的作用相反。

代码示例

import pandas as pd

# 构造原始DataFrame(也可从csv文件读取)
df = pd.DataFrame({
    "city": ["Los Angeles", "London", "Amsterdam", "Rome", "Lisabon", "Berlin"],
    "temp": [0.97, 2.34, 6.05, 4.59, 15.48, 2.38],
    "real_feel": [-4.05, -3.18, 1.63, 1.29, 15.15, -1.65]
})

# 执行转换
melted_df = df.melt(
    id_vars=["city"],  # 指定保留不变的列
    var_name="type",   # 原列名对应的新列名
    value_name="value" # 原列值对应的新列名
)

# 输出结果(转为csv格式)
print(melted_df.to_csv(index=False))

说明

  • id_vars=["city"]:指定不需要被转换的列,每个城市会作为分组基础重复出现。
  • var_name="type":把原来的temp、real_feel这些列名,统一放到名为type的新列中。
  • value_name="value":把原来各列对应的值,统一放到名为value的新列中。

执行后就能得到你需要的长表结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:35:30