Dataframe 如果df.ColumnName(其中ColumnName来自Pyspark中的用户),如何获取列值

Dataframe 如果df.ColumnName(其中ColumnName来自Pyspark中的用户),如何获取列值,dataframe,pyspark,Dataframe,Pyspark,我的代码在Pyspark中如下所示: Product = results.where(results.ColumnName == ProductName ) Product.show() 我希望ColumnName应来自以下用户: ColumnName = input("enter column name") 但我得到的错误如下: -----------------------------------------------------------------------

我的代码在Pyspark中如下所示:

Product = results.where(results.ColumnName == ProductName )
Product.show()
我希望ColumnName应来自以下用户:

ColumnName = input("enter column name")
但我得到的错误如下:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-64-3e0600c86491> in <module>()
----> 1 Prediction_Product_Wise = results.where(results.ColumnName == ProductName ).select( 
ColumnName,'probability','prediction').orderBy("probability",ascending=False)
  2 Prediction_Product_Wise.show()

/usr/local/lib/python3.6/dist-packages/pyspark/sql/dataframe.py in __getattr__(self, name)
 1399         if name not in self.columns:
 1400             raise AttributeError(
 -> 1401                 "'%s' object has no attribute '%s'" % (self.__class__.__name__, name))
 1402         jc = self._jdf.apply(name)
 1403         return Column(jc)

 AttributeError: 'DataFrame' object has no attribute 'ColumnName'
然后数据帧为df
df.Product==apple
应返回
True
值。
我想让用户在Product列的位置可以根据偏好选择任何列名称。

假设
ColumnName
是一个字符串,您可以这样做

从pyspark.sql.functions导入col
产品=结果。其中(列(ColumnName)==ProductName)
Product.show()

您可以尝试创建这样的函数来完成任务。对于数据帧中不存在的列,这将返回False

def is_value(df, column_name: str, value):
    if column_name in df.columns:
        return bool(df.where(df[column_name] == value).first())
    return False

像冠军一样工作!
def is_value(df, column_name: str, value):
    if column_name in df.columns:
        return bool(df.where(df[column_name] == value).first())
    return False