gpt4 book ai didi

python - 加速 Pandas 应用于一批组

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:05 25 4
gpt4 key购买 nike

我有一个大约 100 万行的大型数据框。它们按带有附加列“X”和“Y”的“关键字”列分组。

X   Keyword      Y
yy apply yy
xx apply yy
xy apply yx
xx terms ix
yy terms xi

我想对这些关键字执行一些功能,但我遇到了一个尴尬的情况。基本上,对于每组关键字,我要执行以下操作:

如果大于一行:

  • 删除“x”列等于“y”列的行
  • 保留其余行

但是,如果一组只有一行,其中唯一的一行是 'x' == 'y',则忽略它。

我现在拥有的是:

df = df.merge(another_df, on='Keyword', how="inner")
df = df.groupby('Keyword').apply(group_filter)

def group_filter(group):

if len(group) > 1:

group = group.query('x != y')

return group

这个过程有点慢,我想知道是否有更快的方法来完成这个?

最佳答案

是的,apply 不是很快。但是 IIUC,你可以向量化操作:

group_size = df.groupby("Keyword")["Keyword"].transform("count")
x_eq_y = df["X"] == df["Y"]
df_out = df.loc[(group_size == 1) | (~x_eq_y)]

这给了我

In [76]: df
Out[76]:
X Keyword Y
0 yy apply yy
1 xx apply yy
2 xy apply yx
3 xx terms ix
4 yy terms xi
5 ab unique ab

In [77]: group_size = df.groupby("Keyword")["Keyword"].transform("count")

In [78]: x_eq_y = df["X"] == df["Y"]

In [79]: df.loc[(group_size == 1) | (~x_eq_y)]
Out[79]:
X Keyword Y
1 xx apply yy
2 xy apply yx
3 xx terms ix
4 yy terms xi
5 ab unique ab

关于python - 加速 Pandas 应用于一批组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43847431/

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