簡體   English   中英

僅轉置 Pandas MultiIndex 數據幀的一層

[英]Transpose only one level of a pandas MultiIndex dataFrame

我正在嘗試重新格式化 DataFrame,將一行中的值轉換為列。 我嘗試使用melt,但出現錯誤。 轉置似乎讓我參與了其中,但給出了奇怪的輸出(因為我認為輸入是分組的 DataFrame)

d = {'name':['bil','bil','bil','jim'],
     'col2': ['acct','law', 'acct2','law'],
     'col3': [1,2,3,55]
    }
df2 = pd.DataFrame(data=d)

df2.groupby(['name','col2']).agg({'col3':'first'})

輸出:

name    col2      col3
bil     acct        1
        acct2       3
        law         2
jim     law        55

目標:

     acct acct2 law
bill 1     3     2
jim              55

可以first直接使用。 此外,您還需要使用自定義fill_value unstack

(df2.groupby(['name', 'col2'])['col3']
    .first()
    .unstack(fill_value='')
    .rename_axis(None, 1))

     acct acct2 law
name               
bil     1     3   2
jim              55

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM