【问题标题】:Applying different filters on different rows of a spark dataframe在火花数据帧的不同行上应用不同的过滤器
【发布时间】:2020-05-11 12:37:40
【问题描述】:

我有一个包含 5 列 ColA、ColB、country、start_time、end_time 的数据框。在进行以下处理后,我需要从现有的 df 形成一个新的 df

  If df.country == US then we have to do df.filter(start_time < todays date)

  For remaining countries we have to do df.filter(end_time < todays date)

【问题讨论】:

  • 您好,欢迎来到 Stackoverflow。这对我来说似乎是一些家庭作业,所以请看How do I ask and answer homework questions?。给出了伪代码,那么你尝试了什么,你在哪里卡住了?问题本身并没有显示出任何努力或任何研究。如果您不编辑此问题,它可能很快就会关闭。

标签: apache-spark pyspark apache-spark-sql


【解决方案1】:

您可以通过应用两个过滤器来做到这一点,首先是国家,然后是日期

df.filter(((f.col('country')=='US') & (f.col('start_time')<datetime.datetime.now())) |
          ((f.col('country')!='US') & (f.col('end_time')<datetime.datetime.now())))

【讨论】:

  • 但是你想过滤数据......当你想根据这些列值创建新列时可以使用case
猜你喜欢
  • 1970-01-01
  • 2020-08-09
  • 2016-05-01
  • 2016-06-23
  • 2023-03-14
  • 2017-09-30
  • 2023-03-29
  • 2018-10-27
  • 2019-01-14
相关资源
最近更新 更多