Pyspark Dataframe 操作符“不在”

bttbmeg0  于 2023-03-11  发布在  Spark
关注(0)|答案(8)|浏览(185)

我想重写这从R到Pyspark,任何好看的建议?

array <- c(1,2,3)
dataset <- filter(!(column %in% array))
ulmd4ohb

ulmd4ohb1#

在pyspark中,你可以这样做:

array = [1, 2, 3]
dataframe.filter(dataframe.column.isin(array) == False)

或者使用二元NOT运算符:

dataframe.filter(~dataframe.column.isin(array))
w41d8nur

w41d8nur2#

取运算符 ~,意思是 * contrast *:

df_filtered = df.filter(~df["column_name"].isin([1, 2, 3]))
jvidinwx

jvidinwx3#

df_result = df[df.column_name.isin([1, 2, 3]) == False]
gpfsuwkq

gpfsuwkq4#

语法略有不同,数据集为“date”:

toGetDates={'2017-11-09', '2017-11-11', '2017-11-12'}
df= df.filter(df['DATE'].isin(toGetDates) == False)
o0lyfsai

o0lyfsai5#

不需要*。因此:

list = [1, 2, 3]
dataframe.filter(~dataframe.column.isin(list))
iecba09b

iecba09b6#

您可以使用.subtract()好友。
示例:

df1 = df.select(col(1),col(2),col(3)) 
df2 = df.subtract(df1)

这样,df2将被定义为所有不是df1的df。

6qqygrtg

6qqygrtg7#

也可以循环数组和过滤器:

array = [1, 2, 3]
for i in array:
    df = df.filter(df["column"] != i)
46qrfjad

46qrfjad8#

您还可以使用sql函数.col + .isin()

import pyspark.sql.functions as F

array = [1,2,3]
df = df.filter(~F.col(column_name).isin(array))

如果您正在使用sql函数并希望保持一致性,这可能会很有用。

相关问题