Dataframe 如果df.ColumnName(其中ColumnName来自Pyspark中的用户),如何获取列值
我的代码在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") 但我得到的错误如下: -----------------------------------------------------------------------
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'
然后数据帧为dfdf.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