Transformar una columna y actualizar el DataFrame
Entonces, lo que estoy haciendo a continuación es soltar una columnaA
a partir de unaDataFrame
porque quiero aplicar una transformación (aquí solojson.loads
una cadena JSON) y reemplace la columna anterior con la transformada. Después de la transformación, acabo de unir los dos marcos de datos resultantes.
df = df_data.drop('A').join(
df_data[['ID', 'A']].rdd\
.map(lambda x: (x.ID, json.loads(x.A))
if x.A is not None else (x.ID, None))\
.toDF()\
.withColumnRenamed('_1', 'ID')\
.withColumnRenamed('_2', 'A'),
['ID']
)
Lo que no me gusta de esto es, por supuesto, la sobrecarga a la que me enfrento porque tuve que hacerwithColumnRenamed
operaciones
Con pandas Todos haría algo como esto:
pdf = pd.DataFrame([json.dumps([0]*np.random.randint(5,10)) for i in range(10)], columns=['A'])
pdf.A = pdf.A.map(lambda x: json.loads(x))
pdf
pero lo siguiente no funciona en pyspark:
df.A = df[['A']].rdd.map(lambda x: json.loads(x.A))
Entonces, ¿hay una manera más fácil de lo que estoy haciendo en mi primer código cortado?