【发布时间】:2016-02-20 02:33:14
【问题描述】:
据我所知,在 Spark Dataframe 中,多个列可以具有相同的名称,如下面的数据帧快照所示:
[
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=125231, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0047, 3: 0.0, 4: 0.0043})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=145831, f=SparseVector(5, {0: 0.0, 1: 0.2356, 2: 0.0036, 3: 0.0, 4: 0.4132})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=147031, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=149231, f=SparseVector(5, {0: 0.0, 1: 0.0032, 2: 0.2451, 3: 0.0, 4: 0.0042}))
]
上面的结果是通过将数据框连接到自身创建的,您可以看到4 列有两个a 和f。
问题是当我尝试使用a 列进行更多计算时,我找不到选择a 的方法,我尝试了df[0] 和df.select('a'),都返回了以下错误消息:
AnalysisException: Reference 'a' is ambiguous, could be: a#1333L, a#1335L.
Spark API 中是否有我可以再次将列与重复名称区分开来?或者也许可以让我更改列名?
【问题讨论】:
标签: python apache-spark dataframe pyspark apache-spark-sql