Skip to main content
 首页 » 编程设计

python之在基于 Spark Dataframe 的 API 中过滤多列

2025年01月19日38三少

我有一个像这样的数据框:

+--------+-------+--------------------+-------------------+ 
|     id1|    id2|                body|         created_at| 
+--------+-------+--------------------+-------------------+ 
|1       |      4|....................|2017-10-01 00:00:05| 
|2       |      3|....................|2017-10-01 00:00:05| 
|3       |      2|....................|2017-10-01 00:00:05| 
|4       |      1|....................|2017-10-01 00:00:05| 
+--------+-------+--------------------+-------------------+ 

我想使用 id1 和 id2 来过滤表格。例如,获取 id1=1, id2=4 和 id1=2, id2=3 的行。

目前,我正在使用循环为 df.filter() 生成一个巨大的查询字符串,即 ((id1 = 1) and (id2 = 4)) 或 (( id1 = 2) 和 (id2 = 3))。只是想知道是否有更合适的方法来实现这一点?

请您参考如下方法:

您可以生成一个辅助 DF(表格):

时间:

+--------+-------+ 
|     id1|    id2| 
+--------+-------+ 
|1       |      4| 
|2       |      3| 
+--------+-------+ 

然后加入他们:

SELECT a.* 
FROM tab a 
JOIN tmp b 
  ON (a.id1 = b.id1 and a.id2 = b.id2) 

其中 tab 是您的原始 DF,已注册为表格