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

如何用Pandas的melt函数将多列合并为一列且不含原列名?

问题描述

我有一个包含多列的Pandas DataFrame,希望用melt函数将所有列扁平化为一列,且新DataFrame中不包含原数据的列名。以下是示例数据、现有代码及期望输出,能否简化现有代码?

示例数据

date                   Col1      Col2       Col3      Col4           
1990-01-02 12:00:00     24        24        24.8      24.8           
1990-01-02 01:00:00     59        58        60        60.3   
1990-01-02 02:00:00     43.7      43.9      48        49

期望输出

Rates
0   24
1   59
2   43.7
3   24
4   58
5   43.9
6   24.8
7   60
8   48
9   24.8
10  60.3
11  49

现有代码

df = df.melt(var_name='ColumnNames', value_name='Rates')  # 使用melt扁平化列
df_main.drop(['ColumnNames'], axis = 1, inplace = True)   # 删除'ColumnNames'列
简化方案

可以直接在melt中指定id_vars为空列表,同时仅设置value_name,这样不会生成存放原列名的列,一步到位得到目标结果:

df = df.melt(id_vars=[], value_name='Rates')

注意:如果你的DataFrame包含date列(示例数据中有该列,但期望输出未保留),需要先排除date列,仅对数值列进行扁平化操作:

# 仅处理Col1-Col4,排除date列
df = df.melt(id_vars=['date'], value_name='Rates').drop('date', axis=1)

从期望输出的结果来看,第一种写法更贴合需求,无需额外执行删除列的操作,直接生成仅包含Rates列的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:45:11