Apache spark 从spark dataframe中选择或删除重复列

Apache spark 从spark dataframe中选择或删除重复列,apache-spark,pyspark,apache-spark-sql,pyspark-sql,Apache Spark,Pyspark,Apache Spark Sql,Pyspark Sql,给定一个spark数据帧,其具有重复的列名称(例如a),我无法修改上游或源,如何选择、删除或重命名其中一列,以便检索列值 df.select('A')向我显示一个不明确的列错误,filter,drop,以及withColumnRename。如何选择其中一列?我在数小时的研究中发现的唯一方法是重命名列集,然后创建另一个以新集为标题的数据框 例如,如果你有: >>> import pyspark >>> from pyspark.sql import SQLCon

给定一个spark数据帧,其具有重复的列名称(例如
a
),我无法修改上游或源,如何选择、删除或重命名其中一列,以便检索列值


df.select('A')
向我显示一个不明确的列错误,
filter
drop
,以及
withColumnRename
。如何选择其中一列?

我在数小时的研究中发现的唯一方法是重命名列集,然后创建另一个以新集为标题的数据框

例如,如果你有:

>>> import pyspark
>>> from pyspark.sql import SQLContext
>>> 
>>> sc = pyspark.SparkContext()
>>> sqlContext = SQLContext(sc)
>>> df = sqlContext([(1, 2, 3), (4, 5, 6)], ['a', 'b', 'a'])
DataFrame[a: bigint, b: bigint, a: bigint]
>>> df.columns
['a', 'b', 'a']
>>> df2 = df.toDF('a', 'b', 'c')
>>> df2.columns
['a', 'b', 'c']
您可以使用
df.columns
获取列列表,然后使用循环重命名任何重复项以获取新列列表(不要忘记将
*new\u colu\u list
而不是
new\u colu\u list
传递到
toDF
函数,否则将抛出无效计数错误)