gpt4 book ai didi

python - PySpark 平等过滤器问题

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

我正在尝试过滤 Spark DataFrame (v. 1.5.0) 并看到一个奇怪的结果。先说结果

df.groupby('behavior').count().show()
+---------+-------+
| behavior| count|
+---------+-------+
| Bought|1582345|
| Looked|2154789|
+---------+-------+

这与我的数据框中的行数一致。此外,我们看到列中只有两个“行为”(购买和查看)。这就是事情变得奇怪的地方。

df[df['behavior']=='Bought'].count()
1025879
df[df['behavior']=='Looked'].count()
698742

发生了什么事?数据框的其他行去了哪里?最后,更奇怪的是,使用 isin() 方法提供了正确的结果。

df[df['behavior'].isin(['Bought'])].count()
1582345
df[df['behavior'].isin(['Looked'])].count()
2154789

我不知道这里发生了什么。我本以为这两个过滤器至少会返回一致的结果(错误或正确)。任何帮助将不胜感激!

编辑

按照下面的建议运行以下过滤操作,所有结果都与错误答案一致。

df.filter(df['behavior']=='Bought').count()
1025879
df.filter(df.behavior=='Bought').count()
1025879
df.filter(F.col('behavior')=='Bought').count()
1025879

看来相等性检查出了问题。有趣的是,isin() 功能似乎仍然有效。我本以为 isin() 在幕后使用了相等性检查,但如果是的话我不知道为什么它会返回不同的结果。

最佳答案

而不是做

df[df['behavior']=='Bought'].count()

尝试

df.filter(df.behavior == 'Bought').count()

对其余的查询执行相同的操作。

关于python - PySpark 平等过滤器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45449446/

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