Как получить доступ к ячейке в кадре данных - PullRequest
0 голосов
/ 29 мая 2019

Ошибка при попытке получить значение из DataFrame

Я использую pyspark в Databricks, я пытаюсь получить количество строк в качестве значения для некоторых вычислений

Что я сделал:

f=sqlContext.sql('SELECT COUNT(*) AS COUNTF FROM SOOMLA')
#It´s a dataframe

Теперь я хочу получить это число в DataFrame в качестве значения для расчета, я уже пробовал:

f['COUNTF'].iloc[0]

но я получил:

Out[158]: Column<b'COUNTF[iloc][0]'>

Как я могу получить это 439016392 в качестве значения?

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Я полагаю, что вы используете Pandas DF и Spark DF при использовании iloc.

type(f['COUNTF'])

pyspark.sql.column.Column

Вы можете сделать это, как предложил Бен Т:

f=sqlContext.sql('SELECT * FROM SOOMLA').count()
print(f)

или сначала преобразовать df в pandas, а затем:

f=sqlContext.sql('SELECT COUNT(*) AS COUNTF FROM SOOMLA').toPandas()['COUNTF'].iloc[0]
print(f)
0 голосов
/ 30 мая 2019

Вы можете запустить collect() и извлечь первый элемент в переменные. Вот пример:

f = sqlContext.sql('SELECT COUNT(*) AS COUNTF FROM SOOMLA').collect()[0][0]

print(f)
#3

type(f)
#int

collect() возвращает список строк. Таким образом, collect()[0] вернет первую строку из списка, а collect()[0][0] вернет первый элемент первой строки из списка.

Здесь мы запускаем COUNT(*), и он вернет одну запись / строку. Таким образом, в этом случае collect() возвращает один список только с одной строкой, и нам нужно извлечь первый элемент из первой строки, чтобы collect()[0][0] работал.

Надеюсь, это объяснение поможет!

...