>>> a
DataFrame[id: bigint, julian_date: string, user_id: bigint]
>>> b
DataFrame[id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint]
>>> a.join(b, a.id==b.id, 'outer')
DataFrame[id: bigint, julian_date: string, user_id: bigint, id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint]
Ci sono due id: bigint
e voglio eliminarne uno. Come posso fare?Come eliminare le colonne in dataframe pyspark
Penso di avere la risposta. Selezionare deve prendere un elenco di stringhe NON un elenco di colonne. Quindi fai questo: 'keep = [c per c in a.columns] + [c per c in b.columns if c! = 'Id']' 'd = a.join (b, a.id = = b.id, 'outer'). select (* keep) ' – deusxmach1na
Beh, questo dovrebbe fare esattamente la stessa cosa della mia risposta, dato che sono abbastanza sicuro che' select' accetta stringhe o colonne (https: // spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrame). Btw, nella tua riga 'keep = ...' non c'è bisogno di usare una list comprehension per 'a':' a.columns + [c per c in b.columns if c! = 'Id'] 'dovrebbe raggiungere la stessa cosa esatta, dato che 'a.columns' è già una lista di stringhe. – karlson
@ deusxmach1na In realtà la selezione della colonna basata su stringhe non può funzionare per l'OP, perché ciò non risolverebbe l'ambiguità della colonna 'id'. In tal caso devi usare le istanze 'Column' in' select'. – karlson