我想重写这从R到Pyspark,任何好看的建议?
array <- c(1,2,3) dataset <- filter(!(column %in% array))
ulmd4ohb1#
在pyspark中,你可以这样做:
array = [1, 2, 3] dataframe.filter(dataframe.column.isin(array) == False)
或者使用二元NOT运算符:
dataframe.filter(~dataframe.column.isin(array))
w41d8nur2#
取运算符 ~,意思是 * contrast *:
df_filtered = df.filter(~df["column_name"].isin([1, 2, 3]))
jvidinwx3#
df_result = df[df.column_name.isin([1, 2, 3]) == False]
gpfsuwkq4#
语法略有不同,数据集为“date”:
toGetDates={'2017-11-09', '2017-11-11', '2017-11-12'} df= df.filter(df['DATE'].isin(toGetDates) == False)
o0lyfsai5#
不需要*。因此:
*
list = [1, 2, 3] dataframe.filter(~dataframe.column.isin(list))
iecba09b6#
您可以使用.subtract()好友。示例:
.subtract()
df1 = df.select(col(1),col(2),col(3)) df2 = df.subtract(df1)
这样,df2将被定义为所有不是df1的df。
6qqygrtg7#
也可以循环数组和过滤器:
array = [1, 2, 3] for i in array: df = df.filter(df["column"] != i)
46qrfjad8#
您还可以使用sql函数.col + .isin():
.col
.isin()
import pyspark.sql.functions as F array = [1,2,3] df = df.filter(~F.col(column_name).isin(array))
如果您正在使用sql函数并希望保持一致性,这可能会很有用。
8条答案
按热度按时间ulmd4ohb1#
在pyspark中,你可以这样做:
或者使用二元NOT运算符:
w41d8nur2#
取运算符 ~,意思是 * contrast *:
jvidinwx3#
gpfsuwkq4#
语法略有不同,数据集为“date”:
o0lyfsai5#
不需要
*
。因此:iecba09b6#
您可以使用
.subtract()
好友。示例:
这样,df2将被定义为所有不是df1的df。
6qqygrtg7#
也可以循环数组和过滤器:
46qrfjad8#
您还可以使用sql函数
.col
+.isin()
:如果您正在使用sql函数并希望保持一致性,这可能会很有用。