gpt4 book ai didi

python - 过滤多个条件的最佳方法?

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:32 24 4
gpt4 key购买 nike

我想知道在 pandas 中过滤时检查是否满足 4 个条件中的 3 个条件的最佳和有效方法是什么。

目标词:Stevenson

数据框:

+-----------+
| Names |
+-----------+
| Smith |
| Stevens |
| Parker |
| Stevenson |
| Dickson |
| Greene |
+-----------+

我需要过滤这个 df 以包含至少有 3 个 out of 4 bigrams = ["st", "te", "ev", "on"] 的单词。我需要它包含单词 StevensStevenson。然后我计算目标词和过滤词之间的相似度。

我现在所做的是创建 4 个中的 3 个的所有组合 [(st, te, ev), (st, ev, on), ....] 并过滤我的数据帧df.Names.str.contains("st") & df.Names.str.contains("ev") 等。然后我只留下唯一的行。

我觉得这不是最有效的方法,因为我将大部分时间浪费在过滤上而不是模糊匹配上(如我所料)。我正在测试大小为 100k 的 df,但我的真实 df 超过 1M 行。知道如何做得更好吗?二进制搜索不适用于我的真实示例。

最佳答案

这应该有效。 (经过一些编辑)

bigrams = ["st", "te", "ev", "on"]
df['count'] = df.Names.apply(lambda x: sum([1 for v in bigrams if v in x]))
df[df['count'] >= 3].Names

关于python - 过滤多个条件的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45029633/

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