pandas pandas.melt() 函数-ag捕鱼王app官网

pandas pandas.melt() 函数

作者:迹忆客 最近更新:2024/04/24 浏览次数:

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,旁边的 variablevalues 列则是从原始 dataframe 中提取的值。

我们也可以指定 var_namevalue_name 的名称来代替默认的 variablevalues

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

它只显示原始 dataframeattendance 列的信息。


示例代码: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%

idname 列都被分配为标识符列。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:python

pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。

pandas 追加数据到 csv 中

发布时间:2024/04/24 浏览次数:352 分类:python

本教程演示了如何在追加模式下使用 to_csv()向现有的 csv 文件添加数据。

pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:python

本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。

pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:python

本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图