Python Aggfunc的数据透视表列表

Python Aggfunc的数据透视表列表,python,pandas,pivot-table,Python,Pandas,Pivot Table,Agg函数的透视表字典 我试图在旋转过程中计算3个聚合函数: 计数 卑鄙 科技发展署 代码如下: n_page = (pd.pivot_table(Main_DF, values='SPC_RAW_VALUE', index=['ALIAS', 'SPC_PRODUCT', 'LABLE', 'RAW_PARAMETER_NAME'], c

Agg函数的透视表字典

我试图在旋转过程中计算3个聚合函数:

  • 计数
  • 卑鄙
  • 科技发展署
  • 代码如下:

    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个函数?

    尝试使用
    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设置为
    只会将它们作为列保留在数据帧中,这样以后就不必重置索引。
    pivot\u table
    aggfunc
    参数接受函数或函数列表,而不是
    dict

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

    所以试试看

    n_page = (pd.pivot_table(Main_DF, 
                             values='SPC_RAW_VALUE',  
                             index=['ALIAS', 'SPC_PRODUCT', 'LABLE', 'RAW_PARAMETER_NAME'], 
                             columns=['LOT_VIRTUAL_LINE'],
                             aggfunc=[len, np.mean, np.std])
              .reset_index()
             )
    

    您可能需要在以后重命名层次结构列。

    如@Happy001在approved Response中所述,
    aggfunc
    cant-take
    dict
    为false。我们实际上可以将
    dict
    传递给
    aggfunc

    一个非常方便的功能是能够将
    字典
    传递给
    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
    
    在上面的代码中,我将
    字典
    传递给
    aggfunc
    ,并对
    数量
    平均
    价格
    执行
    len
    操作

    以下是输出:


    示例取自

    我正在计算统计数据“SPC\u原始值”在您的代码中消失了您可以发布一些示例数据吗
    Main_DF.head()。to_dict('list')
    对不起,不能。这是我的爱,来点化妆吧!你能告诉我如何重新命名层次结构列吗,比如说“len”到“n”Great one@ganesh。但是我注意到一个值只能映射到一次aggfunc。如果尝试将相同的值映射到其他aggfunc,则只有第一个映射有效。你遇到过这种情况吗?