代码之家  ›  专栏  ›  技术社区  ›  dubbbdan

熊猫数据透视表2 lambda aggfuncs

  •  0
  • dubbbdan  · 技术社区  · 6 年前

    我想通过多重 aggfuncs pd.pivot_table :

    如果我有 new_df :

                     ATI     ATIMR
    0 Basin Creek    2.0  0.039893
      Calvert Creek  0.0  0.006824
      Lick Creek     0.0  0.017371
      Mule Creek     0.0  0.041154
      Rocker Peak    2.0  0.027903
      Saddle Mtn.    0.0  0.052603
      Shower Falls   1.0  0.035456
    1 Basin Creek    3.0  0.039893
      Calvert Creek  1.0  0.006824
      Lick Creek     1.0  0.017371
    

    这工作:

       pct_75 = lambda y: np.percentile(y, 75)
       func_list = [np.median, np.mean ,pct_75]
    
       new_df = pd.pivot_table(new_df values='ATIMR',index='ATI',aggfunc=func_list)
    

    但当我试图通过一秒钟 lambda 函数如下:

    pct_25 = lambda x: np.percentile(x, 25)
    
    func_list = [pct_25, np.median, np.mean ,pct_75]
    new_df = pd.pivot_table(new_df, values='ATIMR',index='ATI',aggfunc=func_list)
    

    我得到以下错误:

    InvalidIndexError: Reindexing only valid with uniquely valued Index objects
    

    有办法吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   BENY    6 年前

    指派 name lambda 函数,如果不执行此操作,则应用两个 兰姆达 函数,它将返回重复的名称错误

    pct_75 = lambda y: np.percentile(y, 75)
    pct_75 .__name__ = 'pct_75 '
    
    pct_25 = lambda y: np.percentile(y, 25)
    pct_25 .__name__ = 'pct_25'