我已经看到了许多与筛选pyspark数据帧相关的问题,但尽管我尽了最大的努力,我仍然无法让任何非SQL解决方案发挥作用
+----------+-------------+-------+--------------------+--------------+---+
|purch_date| purch_class|tot_amt| serv-provider|purch_location| id|
+----------+-------------+-------+--------------------+--------------+---+
|03/11/2017|Uncategorized| -17.53| HOVER | | 0|
|02/11/2017| Groceries| -70.05|1774 MAC'S CONVEN...| BRAMPTON | 1|
|31/10/2017|Gasoline/Fuel| -20| ESSO | | 2|
|31/10/2017| Travel| -9|TORONTO PARKING A...| TORONTO | 3|
|30/10/2017| Groceries| -1.84| LONGO'S # 2| | 4|
这不起作用:
df1 = spark.read.csv("/some/path/to/file", sep=',')\
.filter((col('purch_location')=='BRAMPTON')
但这不起作用
df1 = spark.read.csv("/some/path/to/file", sep=',')\
.filter(purch_location == 'BRAMPTON')
这个(SQL表达式)可以工作,但需要很长时间,我想有一种更快的非SQL方法
df1 = spark.read.csv("/some/path/to/file", sep=',')\
.filter(purch_location == 'BRAMPTON')
更新我应该提到我能够使用以下方法(比SQL表达式运行得更快):
df1 = spark.read.csv("/some/path/to/file", sep=',')
df2 = df1.filter(df1.purch_location == "BRAMPTON")
但是我想了解为什么“pipe”/
连接语法不正确
您可以使用
df["purch_location"]
如果坚持使用反斜杠,可以执行以下操作:
第一次尝试失败,因为括号不平衡
此外,字符串
BRAMPTON
后面似乎有一些空格,因此您可能希望首先trim
列:相关问题 更多 >
编程相关推荐