如何使用在 DataFrame 中出现两次的列名进行 SELECT?
Posted
技术标签:
【中文标题】如何使用在 DataFrame 中出现两次的列名进行 SELECT?【英文标题】:How to do SELECT with column name that appears twice in DataFrame? 【发布时间】:2016-03-24 17:38:59 【问题描述】:我有以下代码..
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 而不是属性。
我可以按列索引对数据框执行选择吗?
【问题讨论】:
您应该考虑使用 DataFrame API 进行选择,例如joinedFrame.select("LOCID", "AddressID")
.
【参考方案1】:
我通常会重命名该列——您可以尝试:
...join(propertyDF.withColumnRenamed("LocID", "LocID_R"), ...
或者,如果您想一次性更改 DataFrame
的所有列名 - 例如为每个名称添加一个 _R
以表示“正确” - 您可以试试这个:
df.toDF(df.columns.map(_ + "_R"):_*)
这在您将 DataFrame
重新加入到自身时很有用。
【讨论】:
以上是关于如何使用在 DataFrame 中出现两次的列名进行 SELECT?的主要内容,如果未能解决你的问题,请参考以下文章