一周学会Pandas2之Python数据处理与分析-数据重塑与透视-melt() - 融化 / 逆透视 (宽 -> 长)

锋哥原创的Pandas2 Python数据处理与分析 视频教程:  

2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

melt() 是 pandas 中用于数据重塑的核心方法之一,它可以将 宽格式数据 转换为 长格式数据,特别适合处理具有多个观测值列的数据集。与 stack()/unstack() 不同,melt() 提供了更直观的方式来整理数据,尤其适用于数据预处理和清洗阶段。

基本概念:宽格式 vs 长格式

在深入 melt() 之前,先理解两种数据格式:

  • 宽格式:每个变量有单独的列

   ID  Math  Science  English
0   1    90       85       92
1   2    78       88       95
  • 长格式:变量名和值分别存储在单独的列中

   ID   Subject  Score
0   1     Math     90
1   1  Science     85
2   1  English     92
3   2     Math     78
4   2  Science     88
5   2  English     95

基本语法

pd.melt(frame, 
        id_vars=None, 
        value_vars=None, 
        var_name=None, 
        value_name='value', 
        col_level=None, 
        ignore_index=True)

参数说明

参数说明
frame要处理的 DataFrame
id_vars保持不变的列(标识变量)
value_vars要融合的列(观测值变量)
var_name新创建的变量名列的名称
value_name新创建的值列的名称
col_level用于多级列索引的层级
ignore_index是否忽略原始索引(默认为 True)

示例

import pandas as pd
​
# 创建示例数据
df = pd.DataFrame({
    'Student': ['Alice', 'Bob'],
    'Math': [90, 78],
    'Science': [85, 88],
    'English': [92, 95]
})
​
print("原始数据(宽格式):")
print(df)

使用 melt() 转换:

melted_df = pd.melt(
    df,
    id_vars=['Student'],  # 保留学生列
    value_vars=['Math', 'Science', 'English'],  # 融合的科目列
    var_name='Subject',  # 新列名:存储科目名称
    value_name='Score'  # 新列名:存储分数
)
​
print("\n融合后数据(长格式):")
print(melted_df)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值