简短的例子:
vals1 = [(1, "a"),
(2, "b"),
]
columns1 = ["id","name"]
df1 = spark.createDataFrame(data=vals1, schema=columns1)
vals2 = [(1, "k"),
]
columns2 = ["id","name"]
df2 = spark.createDataFrame(data=vals2, schema=columns2)
df1 = df1.alias('df1').join(df2.alias('df2'), 'id', 'full')
df1.show()
结果中有一个列名为id
,两个列名为name
。假设真实的的 Dataframe 有几十个这样的列,我如何重命名具有重复名称的列?
4条答案
按热度按时间hlswsv351#
只重命名相交列的另一种方法
t8e9dugd2#
可以在联接之前重命名重复的列,但联接所需的列除外:
gzszwxb43#
@quaziqarta提出了一个在join之前重命名列的方法,注意你也可以在join之后重命名它们:
你只需要给dataframes起别名(就像你在例子中所做的那样),以便在请求Spark获取列“name”时能够指定你引用的列。
fae0ux8s4#
您可以只使用for循环来更改第二个dataframe中除join列之外的列的名称