Tengo un marco de datos en python/pyspark con columnas id time city zip y así sucesivamente...
Ahora agregué un nuevo name de columna a este marco de datos.
Ahora tengo que organizar las columnas de tal manera que la columna del name venga después de la id .
He hecho como a continuación
change_cols = ['id', 'name'] cols = ([col for col in change_cols if col in df] + [col for col in df if col not in change_cols]) df = df[cols]estoy recibiendo este error
pyspark.sql.utils.AnalysisException: u"Reference 'id' is ambiguous, could be: id#609, id#1224.;"¿Por qué se produce este error? Como puedo rectificar esto.
Puede usar select para cambiar el orden de las columnas:
df.select("id","name","time","city")Si está trabajando con una gran cantidad de columnas:
df.select(sorted(df.columns))Si solo desea reordenar algunos de ellos, manteniendo el resto y sin preocuparse por su orden:
def get_cols_to_front(df, columns_to_front) : original = df.columns # Filter to present columns columns_to_front = [c for c in columns_to_front if c in original] # Keep the rest of the columns and sort it for consistency columns_other = list(set(original)) - set(columns_to_front)) columns_other.sort() # Apply the order df = df.select(*columns_to_front, *columns_other) return df