使用数据透视聚合

时间:2019-10-11 09:08:52

标签: python pandas pivot

我的数据框如下所示:

enter image description here

我想将其转换为以下形式:

enter image description here

我使用以下代码:

df2_SEX_AGE=df1.pivot(index='codprg', columns=['SEX','ETA'], values='counts')

但是会引发以下错误KeyError: 'Level SEX not found'

2 个答案:

答案 0 :(得分:1)

对于将MultiIndex转换为Index的情况,请使用列表理解和pivot_table以避免错误:

  

索引包含重复的条目,无法调整


df2_SEX_AGE=df1.pivot_table(index='codprg', 
                            columns=['SEX','ETA'], 
                            values='counts',  
                            aggfunc='sum')
df2_SEX_AGE.columns = [f'{a}{b}' for a, b in df2_SEX_AGE.columns]

答案 1 :(得分:1)

这应该可以解决您的问题

(df1.assign(p=df['SEX'].astype(str) + df['ETA'].astype(str))
    .pivot(index='codprg', columns='p', values='counts'))