Pyspark数据帧运算符"不在"

Bab*_*abu 20 pyspark

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

array <- c(1,2,3)
dataset <- filter(!(column %in% array))
Run Code Online (Sandbox Code Playgroud)

Rya*_*ier 50

在pyspark你可以这样做:

array = [1, 2, 3]
dataframe.filter(dataframe.column.isin(*array) == False)
Run Code Online (Sandbox Code Playgroud)

  • `*array` 中的 `*` 的作用是什么? (2认同)
  • @rjurney否。==运算符在此执行的操作是对由dataframe.column.isin(* array)返回的“列”结果调用重载的__eq__方法。重载以返回另一个列结果以测试与另一个参数的相等性(在这种情况下为False)。“ is”运算符测试对象的身份,即对象是否确实在内存中相同的位置。如果在此处使用“ is”,它将始终会失败,因为常量“ False”永远不会与“ Column”位于相同的内存位置。此外,您不能重载is。 (2认同)

LaS*_*Sul 20

以运算符表示相反

df_filtered = df.filter(~df["column_name"].isin([1, 2, 3]))
Run Code Online (Sandbox Code Playgroud)

  • 各位,这不应该是公认的答案吗?当我们有专门用于否定的“~”时,为什么要使用这个不太容易理解的“== False”呢? (9认同)

小智 10

df_result = df[df.column_name.isin([1, 2, 3]) == False]
Run Code Online (Sandbox Code Playgroud)