PySpark和SQL:连接和空值
- 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')
- 我应该如何在这一点上设置一个过滤器,或者是否有其他方法可以实现这一点?
- 回答: