Skip to content

BUG: pivot_table aggfunc should accept string function-likes #18713

Closed
@jreback

Description

@jreback

Virtually everywhere we allow strings to substitue for functions in .agg, .apply and such, straightforward to add here. Just need to call https://github.com/pandas-dev/pandas/blob/master/pandas/core/base.py#L627.

example from pd.pivot_table doc-string

In [11]: >>> df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
    ...: ...                          "bar", "bar", "bar", "bar"],
    ...: ...                    "B": ["one", "one", "one", "two", "two",
    ...: ...                          "one", "one", "two", "two"],
    ...: ...                    "C": ["small", "large", "large", "small",
    ...: ...                          "small", "large", "small", "small",
    ...: ...                          "large"],
    ...: ...                    "D": [1, 2, 2, 3, 3, 4, 5, 6, 7]})
    ...: 

In [12]: df
Out[12]: 
     A    B      C  D
0  foo  one  small  1
1  foo  one  large  2
2  foo  one  large  2
3  foo  two  small  3
4  foo  two  small  3
5  bar  one  large  4
6  bar  one  small  5
7  bar  two  small  6
8  bar  two  large  7

works

In [13]: pd.pivot_table(df, values='D', index=['A', 'B'],
    ...:                      columns=['C'], aggfunc=[np.sum, np.mean])
 Out[13]: 
          sum        mean      
C       large small large small
A   B                          
bar one   4.0   5.0   4.0   5.0
    two   7.0   6.0   7.0   6.0
foo one   4.0   1.0   2.0   1.0
    two   NaN   6.0   NaN   3.0

fails

In [14]: pd.pivot_table(df, values='D', index=['A', 'B'],
    ...:                      columns=['C'], aggfunc=['sum', 'mean'])
AttributeError: 'str' object has no attribute '__name__'

Metadata

Metadata

Assignees

No one assigned

    Labels

    Compatpandas objects compatability with Numpy or Python functionsReshapingConcat, Merge/Join, Stack/Unstack, Explode

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions