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

Я новичок в pyspark.У меня есть список столбцов в массиве, как показано ниже.

input_vars = [
'column1',
'column2',    
'column3',
'column4'
]

Теперь я хочу сделать что-то вроде ниже, используя dataframe.

for var in input_vars:
    print(df.var.isNotNull())

Но я получаю ошибку ниже, когда я пытаюсьвыполнить вышеуказанный код

AttributeError: 'DataFrame' object has no attribute 'var'

РЕДАКТИРОВАТЬ

Я попытался df [var] .isNotNull () согласно предложению, данному 'ernest_k' и вышеприведенной ошибкебыл решен.Теперь мое реальное требование - переписать приведенный ниже код pandas dataframe в pyspark dataframe.

for var in input_vars:
    bindt = df2[df2[var].notnull()][var].quantile([0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1]).unique()

    q0 = df2[df2[var].notnull()][var].quantile(0)
    q1 = df2[df2[var].notnull()][var].quantile(0.25)
    q2 = df2[df2[var].notnull()][var].quantile(0.5)
    q3 = df2[df2[var].notnull()][var].quantile(0.75)
    q4 = df2[df2[var].notnull()][var].quantile(1)

Может кто-нибудь помочь мне, как выполнить вышеупомянутое требование.Заранее спасибо.

1 Ответ

0 голосов
/ 11 февраля 2019

Чтобы получить список столбцов из DataFrame, используйте df.columns и оттуда вы можете обработать следующий шаг.

В Spark 2.0+ вы можете использовать (я не на 100% гарантирую, что approxQuantile(var, [0.5], 0.25) удовлетворить ваши требования, пожалуйста, измените его)

columns = df.columns

for var in input_vars:
    if var in columns:
        print(df.filter('{} is not null'.format(var)).approxQuantile(var, [0.5], 0.25))
    else:
        print('Column {} not found'.format(var))

Более подробно, пожалуйста, предпочитаете приблизительноКуантиль

...