【问题标题】:Is there a way to use Dataframe's isin() without using a list?有没有办法在不使用列表的情况下使用 Dataframe 的 isin() ?
【发布时间】:2018-06-02 08:53:57
【问题描述】:

有没有办法在不使用列表的情况下使用 Dataframe 的 isin()?

我正在查看pyspark docs,它看起来需要一个字符串或一个列表。如果字符串或列表绝对庞大怎么办?有其他选择吗?

【问题讨论】:

  • .... 您到底在寻找什么样的替代方案?
  • 您可以尝试加入。
  • 你可以做一个左半连接

标签: python sql apache-spark dataframe pyspark


【解决方案1】:

任一子查询

spark.createDataFrame([(1, ), (2, ), (3, ), (4, )], ["x"]).createTempView("df1")
spark.createDataFrame([(1, ), (3, ) ], ["x"]).createTempView("df2")

spark.sql("SELECT * FROM df1 WHERE x IN (SELECT x FROM df2)").show()
+---+                                                                           
|  x|
+---+
|  1|
|  3|
+---+

或加入(例如semi as suggested by Raphael Roth):

spark.table("df1").join(spark.table("df2"), ["x"], "leftsemi").show()
+---+                                                                           
|  x|
+---+
|  1|
|  3|
+---+

【讨论】:

  • 这样就解决了问题。我希望我们可以只使用该功能,而不必进行所有这些心理奥运会。
猜你喜欢
  • 2021-10-09
  • 1970-01-01
  • 2016-01-10
  • 2016-01-19
  • 1970-01-01
  • 2016-03-24
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多