Pandas pandas.melt() 函数
pandas.melt()
函数重塑或转换一个现有的 DataFrame
。它将 DataFrame
的方向从宽格式变为长格式。
pandas.melt()
语法
pandas.melt(dataframe, id_vars, value_vars, var_name, value_name, col_level)
参数
Dataframe |
强制 | 我们要改变的是 DataFrame 的长格式 |
id_vars |
可选 | 它可以是一个元组、列表或一个 N 维的数组。它是用于标识符变量的列。你可以选择一个以上的标识符列 |
value_vars |
可选 | 它可以是一个个元组、列表或一个 N 维的数组。。默认情况下,没有指定为标识符变量的列是值变量。 |
var_name |
可选 | 它是一个标量类型的变量。它是标识符列的名称。默认情况下,它是 variable |
value_name |
可选 | 它是一个标量类型变量。它是非标识符列的名称。默认情况下,它是 value |
col_level |
可选 | 它是一个整数或字符串。在多索引列的情况下,我们可以使用这个参数来转换我们的 DataFrame |
返回值
它返回一个转换后的 DataFrame
,其中包含一个或多个标识符列,而只有两个非标识符列,名为变量和值。
示例代码:pandas.melt()
首先,我们将只通过传递强制性参数即 DataFrame
来学习这个函数。
import pandas as pd
dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 78,4: 95},
'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
'Obtained Marks': {0: '90%', 1: '75%', 2: '82%',3: '64%',4: '45%'}})
dataframe1 = pd.melt(dataframe)
print(dataframe1)
我们的 DataFrame
为,
Attendance Name Obtained Marks
0 60 Olivia 90%
1 100 John 75%
2 80 Laura 82%
3 78 Ben 64%
4 95 Kevin 45%
输出:
variable value
0 Attendance 60
1 Attendance 100
2 Attendance 80
3 Attendance 78
4 Attendance 95
5 Name Olivia
6 Name John
7 Name Laura
8 Name Ben
9 Name Kevin
10 Obtained Marks 90%
11 Obtained Marks 75%
12 Obtained Marks 82%
13 Obtained Marks 64%
14 Obtained Marks 45%
在这里,你可以看到,在输出中没有标识符列。我们有两个非标识符列。原来的 DataFrame
的每一列现在都是输出 DataFrame
中的一行。
现在我们将传递可选的参数并检查结果。
示例代码:pandas.melt()
,单列为 id_vars
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(dataframe, id_vars=["Name"])
print(dataframe1)
输出:
Name variable value
0 Olivia Attendance 60
1 John Attendance 100
2 Laura Attendance 80
3 Ben Attendance 78
4 Kevin Attendance 95
5 Olivia Obtained Marks 90%
6 John Obtained Marks 75%
7 Laura Obtained Marks 82%
8 Ben Obtained Marks 64%
9 Kevin Obtained Marks 45%
标识符列指定为 Name
,旁边的 variable
和 values
列则是从原始 DataFrame
中提取的值。
我们也可以指定 var_name
和 value_name
的名称来代替默认的 variable
和 values
。
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(
dataframe, id_vars=["Name"], var_name="Performance", value_name="Success"
)
print(dataframe1)
输出:
Name Performance Success
0 Olivia Attendance 60
1 John Attendance 100
2 Laura Attendance 80
3 Ben Attendance 78
4 Kevin Attendance 95
5 Olivia Obtained Marks 90%
6 John Obtained Marks 75%
7 Laura Obtained Marks 82%
8 Ben Obtained Marks 64%
9 Kevin Obtained Marks 45%
示例代码:pandas.melt()
与跳过列的例子
如果我们只想检查出勤率,我们需要指定 value_vars
。
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(
dataframe,
id_vars=["Name"],
value_vars="Attendance",
var_name="Performance",
value_name="Success",
)
print(dataframe1)
输出:
Name Performance Success
0 Olivia Attendance 60
1 John Attendance 100
2 Laura Attendance 80
3 Ben Attendance 78
4 Kevin Attendance 95
它只显示原始 DataFrame
中 Attendance
列的信息。
示例代码:pandas.melt()
与多列信息
我们在演示 DataFrame 中增加一列 ID
。
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"ID": {0: 1, 1: 2, 2: 3, 3: 4, 4: 5},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(dataframe, id_vars=["ID", "Name"])
print(dataframe1)
输出:
ID Name variable value
0 1 Olivia Attendance 60
1 2 John Attendance 100
2 3 Laura Attendance 80
3 4 Ben Attendance 78
4 5 Kevin Attendance 95
5 1 Olivia Obtained Marks 90%
6 2 John Obtained Marks 75%
7 3 Laura Obtained Marks 82%
8 4 Ben Obtained Marks 64%
9 5 Kevin Obtained Marks 45%
ID
和 Name
列都被分配为标识符列。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:114 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
在 Pandas 中使用 stack() 和 unstack() 函数重塑 DataFrame
发布时间:2024/04/24 浏览次数:175 分类:Python
-
本文讨论了 Pandas 中 stack() 和 unstack() 函数的使用。
计算 Pandas DataFrame 中的方差
发布时间:2024/04/23 浏览次数:181 分类:Python
-
本教程演示了如何计算 Python Pandas DataFrame 中的方差。
查找已安装的 Pandas 版本
发布时间:2024/04/23 浏览次数:116 分类:Python
-
在本文中,我们将介绍如何查找已安装的 Python Pandas 库版本。我们使用了内置版本功能和其他功能来显示其他已安装版本的详细信息。
Pandas 中的 Groupby 索引列
发布时间:2024/04/23 浏览次数:79 分类:Python
-
本教程将介绍如何使用 Python Pandas Groupby 对数据进行分类,然后将函数应用于类别。通过示例使用 groupby() 函数按 Pandas 中的多个索引列进行分组。
Pandas 通过 Groupby 应用变换
发布时间:2024/04/23 浏览次数:180 分类:Python
-
本教程演示了 Pandas Python 中与 groupby 方法一起使用的 apply 和 transform 之间的区别。