如何将pandas dataframe与多个列和pyspark等条件连接起来

q5lcpyga  于 2023-06-20  发布在  Spark
关注(0)|答案(1)|浏览(91)

我在一个pyspark脚本中加入了这个join。

d = d.join(p, [
        d.p_hash == p.hash,
        d.dy >= p.mindy,
        d.dy <= p.maxdy,
    ], "left") \
    .drop(p.hash) \
    .drop(p.mindy) \
    .drop(p.maxdy)

变量'd'和'p'是spark Dataframe 。有没有办法让我在Pandas身上做到这一点?

jjjwad0x

jjjwad0x1#

是的,您可以简单地进行合并并使用您的条件过滤数据框,然后删除不需要的列。

d = d.merge(p, left_on=['p_hash'], right_on=['hash'], how='left')
d = d[(d['dy'] >= d['mindy']) & (d['dy'] <= d['maxdy'])]
d = d.drop(['hash', 'mindy', 'maxdy'], axis=1)

pandas上的Merge不太像pyspark,它没有条件连接。
您也可以从这里查看答案:How to do/workaround a conditional join in python Pandas?

相关问题