python - 转置 Pandas 聚合函数中的列

标签 python pandas pivot aggregate

我有一个带有 group by 的聚合函数来获取汇总值。 我的数据集:

df=pd.DataFrame({"A":['a','a','a','a','a','a','b','b','b','b'],
         "Sales":[2,3,7,1,4,3,5,6,9,10],
         "Units":[12,2,2,33,6,2,4,8,3,5],
         "Week":[1,2,2,1,2,1,1,2,2,1]})

在此基础上,我正在应用该函数:

def my_agg(x):
    names = {
        'Sales': x['Sales'].sum(),
        'Units': x['Sales'].sum()
             } 

    return pd.Series(names, index=['Sales','Units'])
dfA= df.groupby(['A','Week']).apply(my_agg)

这给了我输出:

    Sales  Units
A Week              
a 1         6      6
  2        14     14
b 1        15     15
  2        15     15

我想将周转置为列。像这样: 所需输出:

   Week 1              2      
A      Sales  Units   Sales  Units        
a         6     6      14     14   
b        15    15      15     15

另外,请建议输出 2:

           Sales         Units
A  Week   1            2
a         6    14      6      14   
b        15    15     15      15

最佳答案

unstackswaplevel

s=dfA.unstack()
s
Out[127]: 
     Sales     Units    
Week     1   2     1   2
A                       
a        6  14     6  14
b       15  15    15  15
s.swaplevel(0,1,axis=1).sort_index(level=0,axis=1)
Out[128]: 
Week     1           2      
     Sales Units Sales Units
A                           
a        6     6    14    14
b       15    15    15    15

关于python - 转置 Pandas 聚合函数中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50471777/

相关文章:

python - Drive API - 插入文件时解析错误

python - 为什么这个简单的代码对 Python 不起作用?

python - 使用 Python 将输出总和四舍五入到最接近的偶数

mysql - 水平列出 mysql 行值而不旋转

sql-server - 没有聚合或最大值的 SQL 数据透视查询

MySQL 将行转为动态数量的列

python - 从无序点获取多边形

python - 将值向后插入 Pandas Dataframe(从高索引到低索引)

python-2.7 - 如何将变量作为列名传递 pandas

python - 提取 pandas 中特定列名的值