如何使用 Melt 函数和字典重塑 Pandas DataFrame?

Barbara Streisand
发布: 2024-11-22 07:08:10
原创
881 人浏览过

How to Reshape a Pandas DataFrame Using the Melt Function and a Dictionary?

Pandas Melt 函数:重塑数据框以进行分析

问题:

考虑一个数据框多个列和一个字典:

df = pd.DataFrame([[2, 4, 7, 8, 1, 3, 2013], [9, 2, 4, 5, 5, 6, 2014] ], columns=['艾米', '鲍勃', '卡尔', '克里斯', '本', '其他', '年份'])<br>
登录后复制

d = {'A': ['艾米'], 'B': ['鲍勃', '本'],'C':['卡尔', 'Chris']}<br>

我们如何重塑数据框以类似于以下结构,其中列被熔化和分组?

 0 A Amy 2013 2<br> 1 A Amy 2014 9<br> 2 B Bob 2013 4<br> 3 B Bob 2014 2<br> 4 B Ben 2013 1<br> 5 B Ben 2014年5月<br>6℃卡尔 2013 7<br> 7 C 卡尔 2014 4<br> 8 C 克里斯 2013 8<br> 9 C 克里斯 2014 5<br>10 其他 2013 3<br>11 其他 2014 6<br>

答案:

要使用熔化函数重塑数据框,请按照以下步骤操作:

  1. 融化数据框:融化数据框使用熔化功能转换为宽格式。这会将列转换为行,并使用 id_vars 参数指定应保持不变的列。

    m = pd.melt(df, id_vars=['Year'], var_name='Name')
    登录后复制
  • 创建映射字典: 重塑字典 d 创建列名和组之间的映射

    d2 = {}
    for k, v in d.items():
        for item in v:
            d2[item] = k
    登录后复制
  • 添加 'Group': 将新创建的字典 d2 映射到 'Name' 列以添加 'Group' 列。

    m['Group'] = m['Name'].map(d2)
    登录后复制
  • 移动'Other': 将 'Other' 值从 'Name' 列移动到 'Group' 列。

    mask = m['Name'] == 'Other'
    m.loc[mask, 'Name'] = ''
    m.loc[mask, 'Group'] = 'Other'
    登录后复制
  • 生成的数据框将包含所需的扁平结构:

    print(m)
    
        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
    ...    ...    ...    ...    ...
    7   2014  Chris      5      C
    8   2013    Ben      1      B
    9   2014    Ben      5      B
    10  2013             3  Other
    11  2014             6  Other
    登录后复制

    以上是如何使用 Melt 函数和字典重塑 Pandas DataFrame?的详细内容。更多信息请关注PHP中文网其他相关文章!

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