gpt4 book ai didi

python - Pandas 数据框 : filtering on condition defined using columns

转载 作者:行者123 更新时间:2023-11-28 20:31:31 24 4
gpt4 key购买 nike

我刚开始使用 Pandas 数据帧,但经常使用 Spark 的数据帧。考虑以下数据框。

Name   Value   Title
mickey 20 wonderland
donald 10 welcome to donald's castle
minnie 86 Minnie mouse clubhouse

我只想保留“名称”包含在“标题”中的那些行,忽略大小写。所以,在这种情况下,过滤后的数据框应该看起来像

Name   Value   Title
donald 10 welcome to donald's castle
minnie 86 Minnie mouse clubhouse

Name = mickey 的行被删除。

在 spark 中,我可以创建一个数据框 df 然后说 df.filter($'Title'.lower().contains($'Name'.lower()))

有没有一种在 Pandas 数据框中表达它的简单方法?

最佳答案

pandas 中的字符串方法天生就很难向量化。我通常使用列表理解来做到这一点:

df[[y.lower() in x.lower() for x, y in zip(df['Title'], df['Name'])]]

Name Value Title
1 donald 10 welcome to donald's castle
2 minnie 86 Minnie mouse clubhouse

只要您不担心 NaN 和混合类型,大多数字符串方法都可以使用列表理解来加速。参见 For loops with pandas - When should I care? .


如果您需要错误处理,请使用具有 try-except 处理功能的函数。这仍然更快。

def try_check(x, y):
try:
return y.lower() in x.lower()
except AttributeError:
return False

df[[try_check(x, y) for x, y in zip(df['Title'], df['Name'])]]

Name Value Title
1 donald 10 welcome to donald's castle
2 minnie 86 Minnie mouse clubhouse

关于python - Pandas 数据框 : filtering on condition defined using columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54430970/

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