首页 > 后端开发 > Python教程 > Pandas 的 Melt 函数如何将宽数据帧重塑为具有附加列的所需长格式?

Pandas 的 Melt 函数如何将宽数据帧重塑为具有附加列的所需长格式?

Barbara Streisand
发布: 2024-12-08 08:40:12
原创
913 人浏览过

How Can Pandas' Melt Function Reshape Wide Dataframes into a Desired Long Format with Additional Columns?

用于数据转换的 Pandas Melt 函数

当 Pandas 面临复杂的数据重组任务时,melt 函数成为一个强大的工具。它将数据帧从具有多列的宽格式无缝转换为具有较少列的长格式。

在实际场景中,考虑需要重塑的数据帧:

df = pd.DataFrame([[2, 4, 7, 8, 1, 3, 2013], [9, 2, 4, 5, 5, 6, 2014]],
               columns=['Amy', 'Bob', 'Carl', 'Chris', 'Ben', 'Other', 'Year'])
登录后复制
   Amy  Bob  Carl  Chris  Ben  Other  Year
0    2    4     7      8    1      3  2013
1    9    2     4      5    5      6  2014
登录后复制

要转换此将数据帧转换为更结构化的格式,您可以使用熔化函数:

m = pd.melt(df, id_vars=['Year'], var_name='Name')
登录后复制

此操作生成以下内容dataframe:

    Year   Name  value
0   2013    Amy      2
1   2014    Amy      9
2   2013    Bob      4
3   2014    Bob      2
4   2013   Carl      7
...
登录后复制

但是,所需的输出包括一个名为“Group”的附加列。要获得此结果,请重塑字典:

d2 = {}
for k, v in d.items():
    for item in v:
        d2[item] = k
登录后复制

现在可以使用“组”列更新数据框:

m['Group'] = m['Name'].map(d2)
登录后复制

最后,从“名称”中移动“其他”列到“组”列:

mask = m['Name'] == 'Other'
m.loc[mask, 'Name'] = ''
m.loc[mask, 'Group'] = 'Other'
登录后复制

生成的数据框与所需的完美对齐输出:

    Year   Name  value  Group
0   2013    Amy      2      A
1   2014    Amy      9      A
2   2013    Bob      4      B
3   2014    Bob      2      B
4   2013   Carl      7      C
...
登录后复制

通过这种方式,Pandas Melt 函数为数据科学家提供了一种多功能且高效的机制来重塑数据帧,使他们能够轻松地转换和重新组织数据以用于各种分析和可视化目的。

以上是Pandas 的 Melt 函数如何将宽数据帧重塑为具有附加列的所需长格式?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板