本文介绍了如何使用在 DataFrame 中出现两次的列名进行 SELECT?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码..

DataFrame addressDF = sqlContext.read().parquet(addressParquetPath);
DataFrame propertyDF = sqlContext.read().parquet(propertyParquetPath);

DataFrame joinedFrame = addressDF.join(propertyDF, propertyDF.col("LOCID").equalTo(addressDF.col("locid")), "left");

joinedFrame.registerTempTable("joinedFrame");
DataFrame joinedFrameSelect = sqlContext.sql("SELECT LOCID,AddressID FROM joinedFrame");

在 Select LocID 中列出了两次,我如何选择 Address 而不是属性的 LocId.

in the Select LocID is listed twice, how do i pick the LocId of Address instead of property.

我可以按列索引在数据框上执行选择吗?

Can i execute select on the dataframe by column index?

推荐答案

我通常会重命名该列——您可以尝试:

I usually rename the column -- you can either try:

...join(propertyDF.withColumnRenamed("LocID", "LocID_R"), ...

或者,如果您想一次性更改 DataFrame 的所有列名称 -- 例如为每个名称添加一个 _R 表示正确" --你可以试试这个:

Or if you want to change all of the column names for a DataFrame in one go -- such as add an _R for "right" to every name -- you can try this:

df.toDF(df.columns.map(_ + "_R"):_*)

当您将 DataFrame 加入到自身中时,这很有用.

This is useful when you are joining a DataFrame back onto itself.

这篇关于如何使用在 DataFrame 中出现两次的列名进行 SELECT?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-03 10:11