首页 > 解决方案 > 在 SPARK Sql/Pyspark 中将变量值作为列名传递?

问题描述

我是 PYSPARK/SPARKSQL 的初学者,我有如下要求,我有一个如下配置表(DataFrame:Config),配置:
| 数据框 | Col1 | Col2 |Col3 |:---- |:------:| -----:|-----: | 员工 | 姓名1 |姓名2 |地址| 职位 | 司法部 | 角色 |出生日期

我已经迭代了上述数据框并将值分配给变量,并且需要将变量值作为列传递给另一个 DF,如下所示。

例子,

First_Name = Config.alias('a').select('a.col1).filter("Rownumber = '" + str(i) + "'" ).first()[0]
print("First_Name :" + First_Name )
Last_Name = Config.alias('a').select('a.col2).filter("Rownumber = '" + str(i) + "'" ).first()[0]
print("Last_Name :" + Last_Name )

现在 First_Name, Last_Name 变量保存 Dataframe Emp 下面的列名,

需要如下数据框,

DF =Emp.select (col(‘Name1’),col(‘Name2),col(‘Address))

标签: dataframeapache-sparkpysparkapache-spark-sql

解决方案


不确定我是否正确理解了这个问题。但据我了解,您从相应的数据帧中获取了 first_name 和 last_name ,并且您希望将其与DFcol中的函数一起使用。 dataframe

如果是这种情况,您可以使用 python 的 str.format 如下:

DF = emp.select(col("{}".format(First_Name)), 
        col("{}".format(Last_Name)))

推荐阅读