Вы можете сделать это, используя selectExpr()
. Звездочка *
будет un-list
a list
.
Например; *['_c0', '_c1', '_c2', '_c3']
вернет '_c0', '_c1', '_c2', '_c3'
Наряду с помощью list-comprehensions
этот код может быть довольно обобщенным.
df = sqlContext.createDataFrame([(1,'Testing','',True)],('_c0','_c1','_c2','_c3'))
df.show()
+---+-------+---+----+
|_c0| _c1|_c2| _c3|
+---+-------+---+----+
| 1|Testing| |true|
+---+-------+---+----+
col_names = df.columns
print(col_names)
['_c0', '_c1', '_c2', '_c3']
df = df.selectExpr(*[i for i in col_names],*[i+' as '+i+'_dup' for i in col_names])
df.show()
+---+-------+---+----+-------+-------+-------+-------+
|_c0| _c1|_c2| _c3|_c0_dup|_c1_dup|_c2_dup|_c3_dup|
+---+-------+---+----+-------+-------+-------+-------+
| 1|Testing| |true| 1|Testing| | true|
+---+-------+---+----+-------+-------+-------+-------+
Примечание: Также будет работать следующий код.
df = df.selectExpr('*',*[i+' as '+i+'_dup' for i in col_names])