从 Dataframe 中选择Pyspark动态列

kh212irz  于 2023-02-07  发布在  Spark
关注(0)|答案(1)|浏览(158)

我有一个 Dataframe ,有多个列,如t_orno,t_pono,t_sqnb,t_pric,......等等(这是一个有多个列的表)。第二个 Dataframe 包含来自第一个 Dataframe 的列的特定名称。

columnname
t_pono
t_pric
:
:

我只需要从第一个 Dataframe 中选择那些名字出现在第二个 Dataframe 中的列。在上面的例子中是t_pono,t_pric。
如何才能做到这一点?

toe95027

toe950271#

假设您有以下列(可以使用df.columns获得,它返回一个列表):

df1_cols = ["t_orno", "t_pono", "t_sqnb", "t_pric"]
df2_cols = ["columnname", "t_pono", "t_pric"]

要只从第一个 Dataframe 中获取第二个 Dataframe 中存在的列,可以执行set intersection(我将其转换为列表,因此可以使用它来选择数据):

list(set(df1_cols).intersection(df2_cols))

我们得到的结果是:

["t_pono", "t_pric"]

要将所有列放在一起并仅选择这些列:

select_columns = list(set(df1_cols).intersection(df2_cols))

new_df = df1.select(*select_columns)

相关问题