代码之家  ›  专栏  ›  技术社区  ›  Max Ghenis shoyer

aggfunc在pandas透视表的单元格中获取任意值

  •  1
  • Max Ghenis shoyer  · 技术社区  · 7 年前

    我想用 pivot_table 在每个单元格中显示列的任意值。例如,给定 DataFrame 这样地:

    df = pd.DataFrame({'x': ['x1', 'x1', 'x2'],
                       'y': ['a', 'b', 'c']})
    

    计算 y 对于每个值 x 以下内容:

    df.pivot_table(index='x', values='y', aggfunc=len)
        y
    x   
    x1  2
    x2  1
    

    所以代替 [2, 1] ,我想 ['a', 'c'] 或 ['b', 'c'] 是的。

    我试过这些方法,但都会产生错误( notebook )以下内容:

    df.pivot_table(index='x', values='y', aggfunc=sample)
    df.pivot_table(index='x', values='y', aggfunc=head)
    df.pivot_table(index='x', values='y', aggfunc=lambda x: x[0])
    

    每 https://stackoverflow.com/a/38982172/1840471 ,另一种方法是使用 groupby 和 agg ,在这种情况下,这将产生所需的结果:

    df.groupby(['x']).y.agg('head')
    

    不过,我想用 透视表 因为我的完整用例涉及获取行和列中的值。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Andy L.    7 年前

    用一下怎么样 first 具体如下:

    df.pivot_table(index='x', values='y', aggfunc='first')
    
    Out[67]:
        y
    x
    x1  a
    x2  c