Feature Type

  • [X] Adding new functionality to pandas

  • [ ] Changing existing functionality in pandas

  • [ ] Removing existing functionality in pandas

Problem Description

This part of the API seems inconsistent:

In [24]: df = pd.DataFrame({"group": list("aab"), "val1": range(3)})
In [28]: def n_between(ser, low, high):
    ...:     return ser.between(low, high).sum()
    ...: 

In [29]: df.groupby("group")["val1"].agg(n_between, 0, 1)  # works
Out[29]: 
group
a    2
b    0
Name: val1, dtype: int64

In [30]: df.groupby("group").agg(n_between=pd.NamedAgg("val1", n_between, 0, 1))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[30], line 1
----> 1 df.groupby("group").agg(n_between=pd.NamedAgg("val1", n_between, 0, 1))

TypeError: NamedAgg.__new__() takes 3 positional arguments but 5 were given

Feature Description

NamedAgg should forward along args and *kwargs just like the normal callable function application can

Alternative Solutions

status quo

Additional Context

No response

Comment From: rhshadrach

Perhaps it's obvious, but feels worth stating: this would also enable the use of a list with different args/kwargs for each element.

+1

Comment From: tomhoq

take

Comment From: haiyashah

take

Comment From: tomhoq

Hi @haiyashah ! I already had this issue assigned and in the meanwhile have put some time into it. Would you mind taking another issue instead to avoid one of us wasting their time? Thank you for your understanding, Tomaz

Comment From: tomytp

take

Comment From: sreeja97

Hi @tomytp , are you still looking into this one, if not I would like to work on it, thank you!

Comment From: tomytp

Hey, I'm not. Feel free to work on it. Take a look at my PR to avoid repeating the same discussions, good luck!

Hi @tomytp , are you still looking into this one, if not I would like to work on it, thank you!

Comment From: sreeja97

thank you @tomytp

Comment From: sreeja97

take