首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >中的id参考列

中的id参考列
EN

Stack Overflow用户
提问于 2016-09-30 09:21:33
回答 2查看 2.4K关注 0票数 1

我有多个重复列(由于联接),如果我试图通过别名调用它们,就会得到一个不明确的引用错误:

引用'customers_id‘是模糊的,可以是: customers_id#13,customers_id#85,customers_id#130

是否有一种方法可以根据Dataframe中的顺序或数字ID (而不是别名)引用中的列?净化后的名称表明列确实指定了一个id (在下面的示例中是13,85,130 )

稍后编辑:

我发现我可以通过它所在的原始数据引用特定列。但是,虽然我可以在select函数中使用OriginalDataframe.customer_id,但withColumnRename函数只接受字符串别名,因此不能在最终的dataframe中重命名重复的列。

因此,我想最终的问题是:是否有一种方法来引用具有重复别名的列,该列适用于所有需要字符串别名作为参数的函数?

稍后编辑2:

重命名似乎是通过添加一个新列并删除其中一个当前列来实现的:

代码语言:javascript
运行
复制
joined_dataframe = joined_dataframe.withColumn("renamed_customers_id", original_dataframe("customers_id")).drop(original_dataframe("customers_id"))

但是,我想保留我的问题:

是否有一种方法可以引用具有重复别名(所以,使用别名以外的其他东西)的列,以便所有期望字符串别名的函数都接受它?

EN

回答 2

Stack Overflow用户

发布于 2016-09-30 09:37:46

摆脱这种情况的一种方法是使用旧的rdd创建一个新的Dataframe,但是使用一个新的模式,您可以根据自己的意愿命名每一列。当然,这要求您显式地描述整个模式,包括每个列的类型。只要您提供的新模式与旧的Dataframe的列数和列类型相匹配,这就应该有效。

例如,从具有两个名为type的列的Dataframe开始,我们可以将它们重命名为type1type2

代码语言:javascript
运行
复制
df.show()
// +---+----+----+
// | id|type|type|
// +---+----+----+
// |  1| AAA| aaa|
// |  1| BBB| bbb|
// +---+----+----+

val newDF = sqlContext.createDataFrame(df.rdd, new StructType()
  .add("id", IntegerType)
  .add("type1", StringType)
  .add("type2", StringType)
)

newDF.show()
// +---+-----+-----+
// | id|type1|type2|
// +---+-----+-----+
// |  1|  AAA|  aaa|
// |  1|  BBB|  bbb|
// +---+-----+-----+ 
票数 0
EN

Stack Overflow用户

发布于 2017-04-19 06:01:15

主要问题是连接,ı使用python。

代码语言:javascript
运行
复制
h1.createOrReplaceTempView("h1")
h2.createOrReplaceTempView("h2")
h3.createOrReplaceTempView("h3")

joined1 = h1.join(h2, (h1.A == h2.A) & (h1.B == h2.B) & (h1.C == h2.C), 'inner')  

结果数据栏:

代码语言:javascript
运行
复制
A B Column1 Column2 A B Column3 ...

我不喜欢这样,但是join必须这样实现:

代码语言:javascript
运行
复制
joined1 = h1.join(h2, [*argv], 'inner')

我们假定argv = "A“、"B”、"C“

结果栏:

代码语言:javascript
运行
复制
A B column1 column2 column3 ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39788034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档