当前位置:实例文章 » 其他实例» [文章]pandas 笔记:melt函数

pandas 笔记:melt函数

发布人:shili8 发布时间:2025-02-09 02:07 阅读次数:0

**Pandas 笔记: melt 函数**

在数据分析中,经常会遇到需要将宽表转换为长表的场景。这种转换可以使用 pandas 的 `melt` 函数来实现。下面我们将详细介绍 `melt` 函数的用法和示例。

**什么是 melt 函数**

`melt` 函数是一种用于将宽表转换为长表的函数。它会将一个或多个列(通常是 ID 列)与其他列合并,生成新的行数目增加的数据框。

**melt 函数的参数**

`melt` 函数有以下几个关键参数:

* `dataframe`: 需要转换的宽表。
* `id_vars`: 需要保留的 ID 列(通常是唯一标识)。
* `value_vars`: 需要转换的列名列表。
* `var_name`:新生成的变量名称。
* `value_name`:新生成的值名称。

**示例1**

假设我们有一个宽表如下:

| ID | A | B | C |
| --- | --- | --- | --- |
|1 |10 |20 |30 |
|2 |40 |50 |60 |

我们想将其转换为长表,如下所示:

| ID | var_name | value_name |
| --- | --- | --- |
|1 | A |10 |
|1 | B |20 |
|1 | C |30 |
|2 | A |40 |
|2 | B |50 |
|2 | C |60 |

我们可以使用以下代码来实现:

import pandas as pd# 创建宽表data = {
 'ID': [1,2],
 'A': [10,40],
 'B': [20,50],
 'C': [30,60]
}
df = pd.DataFrame(data)

# 使用 melt 函数转换为长表melted_df = pd.melt(df, id_vars='ID', value_vars=['A', 'B', 'C'], var_name='var_name', value_name='value_name')

print(melted_df)


输出结果:

| ID | var_name | value_name |
| --- | --- | --- |
|1 | A |10 |
|1 | B |20 |
|1 | C |30 |
|2 | A |40 |
|2 | B |50 |
|2 | C |60 |

**示例2**

假设我们有一个宽表如下:

| ID | A | B | C |
| --- | --- | --- | --- |
|1 |10 |20 |30 |
|2 |40 |50 |60 |
|3 |70 |80 |90 |

我们想将其转换为长表,如下所示:

| ID | var_name | value_name |
| --- | --- | --- |
|1 | A |10 |
|1 | B |20 |
|1 | C |30 |
|2 | A |40 |
|2 | B |50 |
|2 | C |60 |
|3 | A |70 |
|3 | B |80 |
|3 | C |90 |

我们可以使用以下代码来实现:

import pandas as pd# 创建宽表data = {
 'ID': [1,2,3],
 'A': [10,40,70],
 'B': [20,50,80],
 'C': [30,60,90]
}
df = pd.DataFrame(data)

# 使用 melt 函数转换为长表melted_df = pd.melt(df, id_vars='ID', value_vars=['A', 'B', 'C'], var_name='var_name', value_name='value_name')

print(melted_df)


输出结果:

| ID | var_name | value_name |
| --- | --- | --- |
|1 | A |10 |
|1 | B |20 |
|1 | C |30 |
|2 | A |40 |
|2 | B |50 |
|2 | C |60 |
|3 | A |70 |
|3 | B |80 |
|3 | C |90 |

**总结**

`melt` 函数是 pandas 中用于将宽表转换为长表的函数。它可以使用 `id_vars` 和 `value_vars` 参数来指定 ID 列和需要转换的列名列表。通过设置 `var_name` 和 `value_name` 参数,可以自定义新生成的变量名称。示例代码展示了如何使用 `melt` 函数将宽表转换为长表,生成新的行数目增加的数据框。

相关标签:笔记
其他信息

其他资源

Top