首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在下面的代码中传递数组(多列)

如何在下面的代码中传递数组(多列)
EN

Stack Overflow用户
提问于 2017-11-27 13:21:05
回答 1查看 237关注 0票数 0

如何传递数组列表(多列),而不是使用以下命令在pyspark中传递单个列:

new_df = new_df.filter(new_df.color.isin(*filter_list) == False)

eg:-

我使用这段代码将垃圾值(#,$)移到单个列中

代码语言:javascript
代码运行次数:0
运行
复制
filter_list = ['##', '$']

new_df = new_df.filter(new_df.color.isin(*filter_list) == False)

在本例中,'color‘是列。

但是我想将垃圾(#,##,$,$$$)值删除为多列。

示例输入:-

代码语言:javascript
代码运行次数:0
运行
复制
id       name       Salary

#        Yogita     3000

2        Bhavana    5000

$$       ###        7000

%$4#     Neha       $$$$

示例输出:-

代码语言:javascript
代码运行次数:0
运行
复制
 id         name       salary

 2        Bhavana      5000

如果有人帮我,

提前谢谢你,

Yogita

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-27 17:21:47

下面是一个使用用户定义函数的答案:

代码语言:javascript
代码运行次数:0
运行
复制
from pyspark.sql.types import *
from itertools import chain

filter_list = ['#','##', '$', '$$$']
def filterfn(*x):
    booleans=list(chain(*[[filter not in elt for filter in filter_list] for elt in x]))
    return(reduce(lambda x,y: x and y, booleans, True))

filter_udf=f.udf(filterfn, BooleanType())
new_df.filter(filter_udf(*[col for col in new_df.columns])).show(10)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47511967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档