📜  Pandas DataFrame.melt()(1)

📅  最后修改于: 2023-12-03 15:33:23.490000             🧑  作者: Mango

介绍 Pandas DataFrame.melt() 方法

Pandas 是一款基于 NumPy 的开源数据分析库,它提供了很多方便实用的数据处理工具。其中,DataFrame.melt() 方法是一种非常实用的数据重塑工具,可以将 DataFrame 转化为更加易于分析的形式。

定义

Pandas DataFrame.melt() 方法用于将 DataFrame 从宽格式转换为长格式,也叫“融合”。这意味着它可以将 DataFrame 的一些列旋转为行,从而将数据透视为更高效使用和分析的形式。

语法

下面是 Pandas DataFrame.melt() 方法的语法:

DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)

其中,参数说明如下:

  • id_vars:需要保留的列名(也就是“标识符”),不进行融合操作。
  • value_vars:需要进行融合操作的列名,如果不指定,则会使用其它列。
  • var_name:用作新 DataFrame 中“融合列”的名称。
  • value_name:用作新 DataFrame 中“值列”的名称。
  • col_level:指定需要融合的列级别。
示例

下面是 Pandas DataFrame.melt() 方法的一个示例:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'math_score': [90, 85, 80],
    'english_score': [95, 92, 88],
    'science_score': [89, 87, 84]
}

df = pd.DataFrame(data)

melted = df.melt(id_vars='name', var_name='subject', value_name='score')

print(melted)

这个示例将 DataFrame 转换为长格式,使得每一行数据只包含一个成绩和一个科目。输出结果为:

      name        subject  score
0    Alice     math_score     90
1       Bob     math_score     85
2  Charlie     math_score     80
3    Alice  english_score     95
4       Bob  english_score     92
5  Charlie  english_score     88
6    Alice  science_score     89
7       Bob  science_score     87
8  Charlie  science_score     84

可以看到,melt() 方法将 math_score、english_score 和 science_score 列融合为一个“subject”列,并将每一个值转移到了一个新的“score”列中。

总结

Pandas DataFrame.melt() 方法是一个非常实用的数据重塑工具,可以将 DataFrame 从宽格式转换为长格式。它使用方便,能够将数据透视为更高效使用和分析的形式。如果你还没有使用过这个方法,建议尝试一下,相信会对你的数据分析工作带来很大帮助。