Scala фильтр нескольких условий - PullRequest
0 голосов
/ 20 февраля 2020

Как выполнить выбор DataFrame для параметра «Расстояние больше или равно 50» и «Значение типа обработки 1» или «2»? Мой код ниже, кажется, не нравится множественное условие && / и в выражении фильтра.

df.select("Distance", "Treatment_Type").filter("Distance >= 50").filter("Treatment_Type == 1" && "Treatment_Type == 2").show

Заранее спасибо.

1 Ответ

3 голосов
/ 20 февраля 2020

Вы хотите условие OR, но вы дали условие для Treatment_Type 1 AND 2. Таким образом, вы должны дать правильное условие OR. Вот пример кадра данных

+---+--------+--------------+
| id|Distance|Treatment_Type|
+---+--------+--------------+
|  1|      40|             1|
|  2|      40|             2|
|  3|      40|             3|
|  4|      50|             1|
|  5|      50|             2|
|  6|      50|             3|
|  7|      60|             1|
|  8|      60|             2|
+---+--------+--------------+

При следующих условиях он дает такие же результаты, как показано ниже:

df.select("Distance", "Treatment_Type").filter(col("Distance") >= 50 && (col("Treatment_Type") === 1 || col("Treatment_Type") === 2))
df.select("Distance", "Treatment_Type").filter(col("Distance") >= 50 && col("Treatment_Type").isin(1,2))
df.select("Distance", "Treatment_Type").where("Distance >= 50 and Treatment_Type in (1, 2)").show()

+--------+--------------+
|Distance|Treatment_Type|
+--------+--------------+
|      50|             1|
|      50|             2|
|      60|             1|
|      60|             2|
+--------+--------------+
...