Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pyspark数据帧运算符“;不在“中”;_Pyspark - Fatal编程技术网

Pyspark数据帧运算符“;不在“中”;

Pyspark数据帧运算符“;不在“中”;,pyspark,Pyspark,我想把这个从R改写成Pyspark,有什么好看的建议吗 array <- c(1,2,3) dataset <- filter(!(column %in% array)) array在pyspark中,您可以这样做: array = [1, 2, 3] dataframe.filter(dataframe.column.isin(array) == False) 或使用二进制NOT运算符: dataframe.filter(~dataframe.column.isin(array

我想把这个从R改写成Pyspark,有什么好看的建议吗

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

array在pyspark中,您可以这样做:

array = [1, 2, 3]
dataframe.filter(dataframe.column.isin(array) == False)
或使用二进制NOT运算符:

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

略有不同的语法和“日期”数据集:

toGetDates={'2017-11-09', '2017-11-11', '2017-11-12'}
df= df.filter(df['DATE'].isin(toGetDates) == False)
以运算符~为例,表示相反:


您还可以循环阵列和过滤器:

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

*
不需要。因此:

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

您可以使用
.subtract()
好友

例如:

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

这样,df2将被定义为除df1之外的所有df。

数组中的
*
的任务是什么?*变量是python语法,用于扩展数组以将其元素按顺序一次转储到函数参数中。
dataframe.column
区分大小写!或者,您可以使用字典语法
dataframe[column]
,它不是:)@rjurney No。
=
操作符在这里所做的是调用
列返回的
结果上重载的
\uuuuueq\uu
方法。它重载以返回另一列结果,以测试与另一个参数是否相等(在本例中,
False
)。
is
操作符测试对象标识,即对象是否在内存中的同一位置。如果在此处使用
is
,它将始终失败,因为常量
False
不在同一内存位置。此外,您不能重载
is
。使用*显示列表在这里没有任何区别。你可以只使用isin(array)
,它工作得很好。我不建议在大数据应用程序中使用它…这意味着你需要遍历整个数据集树的时间…如果你的图像中有几个TerraByte要处理,这将是巨大的否,因为Spark内部优化此过滤器,使其在1倍时间内完成此过滤器。那么它应该可以。。。直到新的突破性改变火花更新或框架切换。。。3行而不是1行+隐藏优化对我来说似乎仍然不是一个好模式…无意冒犯,但我仍然建议大家避免使用它,这不是公认的答案吗?当我们有专门用于否定的
~
时,为什么要用这个不那么明显的词来理解
==False
list = [1, 2, 3]
dataframe.filter(~dataframe.column.isin(list))
df1 = df.select(col(1),col(2),col(3)) 
df2 = df.subtract(df1)