Самый быстрый способ узнать, имеет ли столбец постоянное значение в кадре данных PySpark - PullRequest
0 голосов
/ 31 августа 2018

Я хочу подтвердить, что значения столбца PySpark DataFrame одинаковы во всех строках. Например, имея следующий DataFrame

+----------+----------+
|    A     |    B     |
+----------+----------+
|       2.0|       0.0|
|       0.0|       0.0|
|       1.0|       0.0|
|       1.0|       0.0|
|       0.0|       0.0|
|       1.0|       0.0|
|       0.0|       0.0|
+----------+----------+

столбец "A" не является константой, а "B" является.

Я пробовал два метода:

1- Проверьте стандартное значение = 0:

df.select(stddev(col('B'))).collect()

2- Получить разные значения:

df.select("B").distinct().collect()

Первый метод занимает 16 минут, а второй - 12 минут, но это только одно выполнение, так что я не уверен в его значимости.

Как лучше всего проверить это в PySpark?

1 Ответ

0 голосов
/ 31 августа 2018

stdev довольно сложная операция, distinct тоже. Если ваша задача - проверить, все ли значения в определенном столбце равны какой-то определенной переменной, я бы попробовал сделать что-то подобное.

df.filter(col('B') != your_value).count() == 0

Возможно, вы не знаете значение этого столбца. Но это легко решить, просто взяв значение head (любое) и сравнив его с:

your_value = df.select('B').first()[0]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...