我是全新的pyspark
并想翻译我现有的pandas
/ python
代码到PySpark
.
我想子集我的dataframe
这样只有包含我要查找的特定关键字的行'original_problem'
字段被返回。
下面是我在 PySpark 中尝试的 Python 代码:
def pilot_discrep(input_file):
df = input_file
searchfor = ['cat', 'dog', 'frog', 'fleece']
df = df[df['original_problem'].str.contains('|'.join(searchfor))]
return df
当我尝试运行上述命令时,出现以下错误:
AnalysisException:u“无法从原始问题中提取值#207:
需要结构类型但得到字符串;”
在 pyspark 中,尝试以下操作:
df = df[df['original_problem'].rlike('|'.join(searchfor))]
或者等价地:
import pyspark.sql.functions as F
df.where(F.col('original_problem').rlike('|'.join(searchfor)))
或者,你可以去udf
:
import pyspark.sql.functions as F
searchfor = ['cat', 'dog', 'frog', 'fleece']
check_udf = F.udf(lambda x: x if x in searchfor else 'Not_present')
df = df.withColumn('check_presence', check_udf(F.col('original_problem')))
df = df.filter(df.check_presence != 'Not_present').drop('check_presence')
但 DataFrame 方法是首选,因为它们会更快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)