【问题标题】:Transpose only one level of a pandas MultiIndex dataFrame只转置一层 pandas MultiIndex 数据帧
【发布时间】:2018-08-14 14:13:18
【问题描述】:

我正在尝试重新格式化 DataFrame,将一行中的值转换为列。我尝试使用融化但出现错误。 Transpose 似乎让我成功了,但给出了奇怪的输出(因为我认为输入是一个分组的 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

【问题讨论】:

    标签: python pandas dataframe multi-index


    【解决方案1】:

    您可以直接使用first。此外,您还需要 unstack 和自定义 fill_value

    (df2.groupby(['name', 'col2'])['col3']
        .first()
        .unstack(fill_value='')
        .rename_axis(None, 1))
    
         acct acct2 law
    name               
    bil     1     3   2
    jim              55
    

    【讨论】:

    • 这对示例非常有效,但是有没有办法在没有点语法的情况下编写它?它会导致我的实际数据集中出现错误,类似于:stackoverflow.com/questions/40506390/…
    • @Rilcon42 好的,现在看看?
    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 2017-09-19
    • 2018-08-14
    • 1970-01-01
    • 2019-06-29
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多