【发布时间】:2017-03-13 22:50:20
【问题描述】:
如何仅返回 Spark DataFrame 中列的值在指定列表中的行?
这是我的 Python pandas 执行此操作的方式:
df_start = df[df['name'].isin(['App Opened', 'App Launched'])].copy()
我看到this SO scala 实现并尝试了几种排列,但无法使其工作。
这是一次使用 pyspark 失败的尝试:
df_start = df_spark.filter(col("name") isin ['App Opened', 'App Launched'])
输出:
Traceback (most recent call last):
File "/tmp/zeppelin_pyspark-6660042787423349557.py", line 253, in <module>
code = compile('\n'.join(final_code), '<stdin>', 'exec', ast.PyCF_ONLY_AST, 1)
File "<stdin>", line 18
df_start = df_spark.filter(col("name") isin ['App Opened', 'App Launched'])
^
SyntaxError: invalid syntax
另一个尝试:
df_start = df_spark.filter(col("name").isin(['App Opened', 'App Launched']))
输出:
Traceback (most recent call last):
File "/tmp/zeppelin_pyspark-6660042787423349557.py", line 267, in <module>
raise Exception(traceback.format_exc())
Exception: Traceback (most recent call last):
File "/tmp/zeppelin_pyspark-6660042787423349557.py", line 260, in <module>
exec(code)
File "<stdin>", line 18, in <module>
NameError: name 'col' is not defined
【问题讨论】:
-
你的尝试结果如何?
-
谢谢。刚刚添加了输出以及另一个失败的尝试。
-
这是因为你还没有导入
col。试试from spark.sql.functions import col。
标签: python apache-spark pyspark