Возможно, вам придется переименовать некоторые дубликаты столбцов, чтобы отфильтровать дубликаты.в противном случае столбцы в дубликатах будут отменены, в то время как вы можете захотеть сохранить один столбец для каждого.Ниже приведен один способ, который может помочь:
# an example dataframe
cols = list('abcaded')
df_ticket = spark.createDataFrame([tuple(i for i in range(len(cols)))], cols)
>>> df_ticket.show()
#+---+---+---+---+---+---+---+
#| a| b| c| a| d| e| d|
#+---+---+---+---+---+---+---+
#| 0| 1| 2| 3| 4| 5| 6|
#+---+---+---+---+---+---+---+
# unless you just want to filter a subset of all duplicate columns
# this list is probably not useful
duplicatecols = list('ad')
# create cols_new so that seen columns will have a suffix '_dup'
cols_new = []
seen = set()
for c in df_ticket.columns:
cols_new.append('{}_dup'.format(c) if c in seen else c)
seen.add(c)
>>> cols_new
#['a', 'b', 'c', 'a_dup', 'd', 'e', 'd_dup']
Затем отфильтруйте результат по новым именам столбцов
>>> df_ticket.toDF(*cols_new).select(*[c for c in cols_new if not c.endswith('_dup')]).show()
#+---+---+---+---+---+
#| a| b| c| d| e|
#+---+---+---+---+---+
#| 0| 1| 2| 4| 5|
#+---+---+---+---+---+
При этом первый из столбцов останется с теми же именами столбцов.это должно быть легко исправить, если вы хотите сохранить последнее.В идеале, вы должны настроить имена столбцов перед созданием такого кадра данных с дублированными именами столбцов.