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
列都被分配为标识符列。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
pandas dataframe dataframe.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:python
-
dataframe.shift() 函数是将 dataframe 的索引按指定的周期数进行移位。
python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:python
-
python pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:python
-
pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。
pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:python
-
本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。
pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:python
-
本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。
在 python 中将 pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:python
-
了解如何在 python 中将 pandas 系列日期时间转换为字符串
在 python pandas 中使用 str.split 将字符串拆分为两个列表列
发布时间:2024/04/24 浏览次数:1124 分类:python
-
本教程介绍如何使用 pandas str.split() 函数将字符串拆分为两个列表列。