比较 Pyspark 中的列名

Posted

技术标签:

【中文标题】比较 Pyspark 中的列名【英文标题】:Comparing column names in Pyspark 【发布时间】:2020-05-27 00:57:06 【问题描述】:

我有一个从源文件创建的数据框。

我从数据库中的表创建了另一个数据框。

源文件有时可能会添加新列。

例如:今天的源文件有以下列

col1,col2,col3,col4  

几个月后,源文件有以下几列

col1,col2,col5,col3,col4,col6  

注意:新添加的列的顺序也可以更改,它们不一定在文件末尾。

我想将这些列与数据库 (df2)(具有静态列)中的数据框进行比较,并想要数据框中新添加的列的名称。

(我会定期向数据表添加列,因此任何新列都会添加到数据库中。)

目前我正在做以下事情

set(df1) - set(df2)  

下面给出了

col5,col6

新添加列的列名,但我无法将这些列名转换为数据框,以便我可以将新列名提取到数据库表中

(只是要提取的列名 - 通知用户源文件中有新列) 请帮忙。

【问题讨论】:

【参考方案1】:

以下内容对我有用。

df = set(df1) - set(df2)
df3 = spark.createDataFrame(df,StringType())

【讨论】:

以上是关于比较 Pyspark 中的列名的主要内容,如果未能解决你的问题,请参考以下文章

PySpark:如何将数据框与存储在其他变量中的列名连接起来

为 PySpark 中的最大值选择每行的列名

映射 dict(来自 rdd)以递归方式更改 Python/PySpark 中的列名

Informix JDBC PySpark 将列名中的结果作为列值读取

PySpark AnalysisException:无法解析列名

Pyspark DataFrame:查找两个 DataFrame 之间的差异(值和列名)