在火花数据帧的不同行上应用不同的过滤器
Posted
技术标签:
【中文标题】在火花数据帧的不同行上应用不同的过滤器【英文标题】: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)
【问题讨论】:
您好,欢迎来到 ***。这对我来说似乎是一些家庭作业,所以请看How do I ask and answer homework questions?。给出了伪代码,那么你尝试了什么,你在哪里卡住了?问题本身并没有显示出任何努力或任何研究。如果您不编辑此问题,它可能很快就会关闭。 【参考方案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以上是关于在火花数据帧的不同行上应用不同的过滤器的主要内容,如果未能解决你的问题,请参考以下文章
火花,在DataFrame(或RDD)上多次应用过滤器,而没有多余的评估