如何访问 pyspark 数据帧中的动态列



我是 pyspark 的新手。我在如下所示的数组中有列列表。

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

现在我想使用数据帧做如下的事情。

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

但是当我尝试执行上面的代码时,我得到以下错误

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

编辑

我已经根据"ernest_k"给出的建议尝试了 df[var].isNotNull((,并且上述错误得到了解决。现在我的实际要求是将下面的熊猫数据帧代码重写为 pyspark 数据帧。

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)

任何人都可以帮助我如何实现上述要求。提前谢谢。

若要从数据帧获取列列表,请使用 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))

更多细节,请首选近似分位数

相关内容

  • 没有找到相关文章

最新更新