只转置Pandas多索引数据帧的一个级别

2024-04-25 17:56:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试重新格式化数据帧,将行中的值转换为列。我试着用熔体,但出了点问题。转置似乎给了我一部分帮助,但却给出了奇怪的输出(因为我认为输入是一个分组的数据帧)

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'})

输出:

^{pr2}$

目标:

     acct acct2 law
bill 1     3     2
jim              55

Tags: 数据namedataframedatacol2col3pddf2
1条回答
网友
1楼 · 发布于 2024-04-25 17:56:36

您可以直接使用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

相关问题 更多 >