如何使用 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<p> 1 A Amy 2014 9</p> 2 B Bob 2013 4<ol> 3 B Bob 2014 2 B Bob 2013 4<li> 3 B Bob 2014 4 5 B Ben 2014年5月<strong>6℃卡爾2013 7</strong> 7 C 卡爾2014 4 8 C2013 8<pre class="brush:php;toolbar:false">m = pd.melt(df, id_vars=['Year'], var_name='Name')
登入後複製
9 C C其他2014 6
  • 答案:

    d2 = {}
    for k, v in d.items():
        for item in v:
            d2[item] = k
    登入後複製
    要使用熔化函數重塑資料框,請依照下列步驟操作:
  • 融化資料框:

    融化資料框使用熔化功能轉換為寬格式。這會將列轉換為行,並使用 id_vars 參數指定應保持不變的列。
    m['Group'] = m['Name'].map(d2)
    登入後複製
  • 建立映射字典:

    重塑字典d 建立列名與群組之間的對應
    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
    登入後複製
    新增'Group': 將新建立的字典d2對應到 'Name' 欄位以新增 'Group' 欄位。 移動'Other': 將 'Other' 值從 'Name' 欄位移到 'Group' 欄位。 產生的資料框將包含所需的扁平結構:

    以上是如何使用 Melt 函數和字典重塑 Pandas DataFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    來源:php.cn
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    作者最新文章
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板