Come accennato in manyother locations sul Web, aggiungere una nuova colonna a un DataFrame esistente non è semplice. Sfortunatamente è importante avere questa funzionalità (anche se è inefficiente in un ambiente distribuito) specialmente quando si tenta di concatenare due DataFrame
s usando unionAll
.Aggiungere una colonna vuota per accendere DataFrame
Qual è la soluzione più elegante per aggiungere una colonna null
a DataFrame
per facilitare un unionAll
?
La mia versione è questa:
from pyspark.sql.types import StringType
from pyspark.sql.functions import UserDefinedFunction
to_none = UserDefinedFunction(lambda x: None, StringType())
new_df = old_df.withColumn('new_column', to_none(df_old['any_col_from_old']))
Come fare questo condizionalmente, se la colonna non esiste in primo luogo? Sto cercando di usare UDF e passare il DF a questo e poi facendo 'new_column non nel controllo df.columns', ma non riesco a farlo funzionare. – Gopala
@Gopala Questo aiuto: http://stackoverflow.com/q/35904136/1560062? – zero323
Anch'io l'ho guardato, ma non ero ancora in grado di incorporarlo condizionatamente in un 'withColumn ('blah', dove (has_column (df ['blah']) == False) ....' tipo di costrutto. Deve mancare qualche costrutto sintattico.Voglio aggiungere una colonna con Nulls, se non esiste.Questa risposta fa la prima, l'altra controlla quest'ultima. – Gopala