Pandas Pivot表Aggfunc列表

时间:2015-12-10 04:46:23

标签: python pandas pivot-table

Agg功能的Pandas Pivot表字典

我试图在旋转期间计算3个aggregative函数:

  1. 计数
  2. 平均数
  3. STDEV
  4. 这是代码:

    n_page = (pd.pivot_table(Main_DF, 
                             values='SPC_RAW_VALUE',  
                             index=['ALIAS', 'SPC_PRODUCT', 'LABLE', 'RAW_PARAMETER_NAME'], 
                             columns=['LOT_VIRTUAL_LINE'],
                             aggfunc={'N': 'count', 'Mean': np.mean, 'Sigma': np.std})
              .reset_index()
             )
    

    我得到的错误是:KeyError: 'Mean'

    如何计算这3个函数?

3 个答案:

答案 0 :(得分:14)

正如@ Happy001在批准的回答中所写,aggfunc不能dict为假。我们实际上可以将dict传递给aggfunc

一个非常方便的功能是能够将dictionary传递给aggfunc,以便您可以对所选的每个值执行不同的功能。 例如:

import pandas as pd
import numpy as np

df = pd.read_excel('sales-funnel.xlsx')  #loading xlsx file

table = pd.pivot_table(df, index=['Manager', 'Status'], columns=['Product'], values=['Quantity','Price'],
           aggfunc={'Quantity':len,'Price':[np.sum, np.mean]},fill_value=0)
table

在上面的代码中,我将dictionary传递给aggfunc并对lenQuantitymean操作执行sum操作在Price

这是输出附件:

enter image description here

该示例来自pivot table explained.

答案 1 :(得分:7)

aggfunc的{​​{1}}参数采用函数或函数列表,但不是pivot_table

  

aggfunc:function,默认numpy.mean或函数列表   如果传递的函数列表,生成的数据透视表将具有分层列,其顶层是函数名称(从函数对象本身推断)

所以试试

dict

您可能希望以后重命名分层列。

答案 2 :(得分:2)

尝试使用groupby

df = (Main_DF
      .groupby(['ALIAS', 'SPC_PRODUCT', 'LABLE', 'RAW_PARAMETER_NAME'], as_index=False)
      .LOT_VIRTUAL_LINE
      .agg({'N': 'count', 'Mean': np.mean, 'Sigma': np.std})
     )

设置as_index=False只会将这些作为列留在数据框中,这样您就不必在之后重置索引。