gpt4 book ai didi

python pandas 自定义聚合函数

转载 作者:太空狗 更新时间:2023-10-29 18:26:41 26 4
gpt4 key购买 nike

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

grp.agg 的期望输出:

one two
1 x|y
2 y|z
3 z

在集成数据帧之前,我的聚合函数是 "|".join(sorted(set(x)))。理想情况下,我希望组中有任意数量的列,并且 agg 返回 "|".join(sorted(set()) 像上面两个一样的每个列项。我也试过 np .char.join().

我很喜欢 Pandas,它让我从 800 行的复杂程序变成了 400 行的公园漫步。谢谢:)

最佳答案

你是如此亲密:

In [1]: df.groupby('one').agg(lambda x: "|".join(x.tolist()))
Out[1]:
two
one
1 x|y
2 y|z
3 z

扩展答案以处理排序并只取集合:

In [1]: df = DataFrame({'one':[1,1,2,2,3], 'two':list('xyyzz'), 'three':list('eecba')}, index=list('abcde'), columns=['one','two','three'])

In [2]: df
Out[2]:
one two three
a 1 x e
b 1 y e
c 2 y c
d 2 z b
e 3 z a

In [3]: df.groupby('one').agg(lambda x: "|".join(x.order().unique().tolist()))
Out[3]:
two three
one
1 x|y e
2 y|z b|c
3 z a

关于python pandas 自定义聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14246817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com