Единственный способ, который я нашел за несколько часов исследований, - переименовать набор столбцов, а затем создать еще один кадр данных с новым набором в качестве заголовка.
Например, если у вас есть:
>>> 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_col_list
вместо new_col_list
в toDF
иначе это приведет к ошибке неверного подсчета).