mgi*_*gig 4 python apache-spark pyspark
如何仅返回列的值在指定列表中的Spark DataFrame的行?
这是我的Python pandas执行此操作的方式:
df_start = df[df['name'].isin(['App Opened', 'App Launched'])].copy()
Run Code Online (Sandbox Code Playgroud)
我看到了这个 SO scala实现并尝试了几种排列,但无法使其工作.
这是使用pyspark执行此操作的失败尝试:
df_start = df_spark.filter(col("name") isin ['App Opened', 'App Launched'])
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
另一种尝试:
df_start = df_spark.filter(col("name").isin(['App Opened', 'App Launched']))
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
正如dmdmdmdmdmd在评论中指出的那样,第二种方法不起作用,因为col需要导入:
from pyspark.sql.functions import col
df_start = df_spark.filter(col("name").isin(['App Opened', 'App Launched']))
Run Code Online (Sandbox Code Playgroud)
这是完成过滤器的另一种方法:
df_start = df_spark.filter(df_spark.name.isin(['App Opened', 'App Launched']))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9769 次 |
| 最近记录: |