python pandas custom agg function

前端 未结 3 1030
情书的邮戳
情书的邮戳 2021-02-05 22:58
Dataframe:
  one two
a  1  x
b  1  y
c  2  y
d  2  z
e  3  z

grp = DataFrame.groupby(\'one\')
grp.agg(lambda x: ???) #or equivalent function

Desired o

3条回答
  •  遇见更好的自我
    2021-02-05 23:29

    Just an elaboration on the accepted answer:

    df.groupby('one').agg(lambda x: "|".join(x.tolist()))
    

    Note that the type of df.groupby('one') is SeriesGroupBy. And the function agg defined on this type. If you check the documentation of this function, it says its input is a function that works on Series. This means that x type in the above lambda is Series.

    Another note is that defining the agg function as lambda is not necessary. If the aggregation function is complex, it can be defined separately as a regular function like below. The only constraint is that the x type should be of Series (or compatible with it):

    def myfun1(x):
        return "|".join(x.tolist())
    

    and then:

    df.groupby('one').agg(myfun1)
    

提交回复
热议问题