-->
当前位置:首页 > articles > 正文内容

PySpark和SQL:连接和空值

Luz12个月前 (04-10)articles673

PySpark and SQL : join and null values

  • Joon 问题:
    • 我有pyspark dataframe,由两列组成,每列分别命名为input和target。这两个是两个单列数据帧的交叉连接。下面是这样一个数据帧的示例。
    • +-----+------+|input|target|+-----+------+|A    |Voigt.||A    |Leica ||A    |Zeiss ||B    |Voigt.||B    |Leica ||B    |Zeiss ||C    |Voigt.||C    |Leica ||C    |Zeiss |+-----+------+
    • 然后我有另一个数据框,它提供了一个数字,描述了输入和目标列之间的关系。然而,不能保证每个输入目标都有这个数值。例如,A-Voigt可能有2作为其关系值,但A-Leica可能根本没有这个值。下面是一个例子
    • +-----+------+---+|input|target|val|+-----+------+---+|A    |Voigt.|2  ||A    |Zeiss |1  ||B    |Leica |3  ||C    |Zeiss |5  ||C    |Leica |2  |+-----+------+---+
    • 现在我想要一个数据帧,它是这两个的集合,看起来像这样。
    • +-----+------+----+|input|target|val |+-----+------+----+|A    |Voigt.|2   ||A    |Leica |null||A    |Zeiss |1   ||B    |Voigt.|null||B    |Leica |3   ||B    |Zeiss |null||C    |Voigt.|null||C    |Leica |5   ||C    |Zeiss |2   |+-----+------+----+
    • 我试着把左边这两列连接起来,试着把它们过滤掉,但我在填写这张表格时遇到了问题。
    • result = input_target.join(input_target_w_val, (input_target.input == input_target_w_val.input) & (input_target.target == input_target_w_val.target), 'left')
    • 我应该如何在这一点上设置一个过滤器,或者是否有其他方法可以实现这一点?
  • 回答:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。