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

Pandas DataFrame布局转换:实现列转行结构调整需求

如何将Pandas DataFrame的列转换为行结构(宽表转长表)

你需要把宽格式的DataFrame转换成长格式——也就是把column2和column3的列名转成新的行数据,同时保留column1作为分组标识。这在Pandas里是非常常见的操作,用melt或stack函数就能轻松实现,我给你具体的代码方案:

第一步:先复现你的原始DataFrame

先把你提供的数据构建成可操作的Pandas DataFrame:

import pandas as pd

df = pd.DataFrame({
    'column1': ['A', 'B', 'C', 'D'],
    'column2': [0.020, 0.045, 0.230, 0.130],
    'column3': [0.76, 1.30, 0.32, 0.67]
})

方法一:使用melt函数(最直观的方式)

melt是Pandas专门为宽表转长表设计的工具,你只需要指定哪列作为分组标识,剩下的列会自动转成行:

# 转换格式,指定分组列、原列名对应的新列名、值列名
melted_df = df.melt(
    id_vars='column1',       # 保留作为分组依据的列
    var_name='newCol',       # 原列名要放到的新列名
    value_name='value'       # 原列值要放到的新列名
)

# 如果你想要和示例里一样的显示效果(相同column1合并显示),可以设置索引并排序
melted_df = melted_df.set_index('column1').sort_index()

执行后打印的结果和你期望的结构完全匹配:

newCol  value
column1               
A        column2  0.020
A        column3  0.760
B        column2  0.045
B        column3  1.300
C        column2  0.230
C        column3  0.320
D        column2  0.130
D        column3  0.670

方法二:使用stack函数(适合索引操作习惯)

如果你更习惯用索引操作,stack可以把列轴的层级转成行轴,再重置索引得到目标结构:

# 先把column1设为索引,再堆叠其他列
stacked_df = df.set_index('column1').stack().reset_index(name='value')
# 把自动生成的临时列名重命名为newCol
stacked_df = stacked_df.rename(columns={'level_1': 'newCol'})

这个方法得到的结果和melt完全一致,只是实现路径不同,你可以根据自己的习惯选择。

补充说明

你示例里显示的Name: value, dtype: float64是Pandas打印Series时的元信息,在我们转换后的DataFrame里,value列就是float类型,和这个描述完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:42:51