gpt4 book ai didi

python - 如何通过加入只保留 pandas group 的第一个和最后一个项目

转载 作者:行者123 更新时间:2023-12-01 23:16:46 25 4
gpt4 key购买 nike

假设我有以下 df:

pd.DataFrame({'x':['bob','bob','bob','amy','amy','amy'],'y':['keep this','not this','keep this','keep this','not this','keep this']})


x y
0 bob keep this
1 bob not this
2 bob keep this
3 amy keep this
4 amy not this
5 amy keep this

我想按x分组,加入y。但是,我只想要连接的第一个和最后一个项目。

通过join做一个基本的分组,结果是这样的:

df.groupby('x').agg({'y':', '.join})

y
x
amy keep this, not this, keep this
bob keep this, not this, keep this

但是,我想要的输出如下:

          y
x
amy keep this, keep this
bob keep this, keep this

有没有办法以编程方式执行此操作?我尝试使用一些索引和切片技巧作为连接的一部分,但出现以下错误:

TypeError: 'builtin_function_or_method' object is not subscriptable

如果有办法做到这一点,那就太好了。谢谢!

最佳答案

你可以分组两次,一次保持第一个/最后一个,一次用于聚合:

(df.groupby('x', as_index=False)
.apply(lambda d: d.iloc[[0,-1]])
.groupby('x')
.agg({'y':', '.join})
)

输出:

                        y
x
amy keep this, keep this
bob keep this, keep this

关于python - 如何通过加入只保留 pandas group 的第一个和最后一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68703628/

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