Tengo una lista que estoy tratando de agregar a un marco de datos. Se ve algo como esto:
list_one = ['apple','banana','cherry',' ', 'grape', 'orange', 'pineapple',''] Si agrego la lista a un dataframe, usando df = pd.DataFrame({'list_one':list_one}) se verá así:
list_one ------------- 0 apple 1 banana 2 cherry 3 4 grape 5 orange 6 pineapple 7Quiero combinar algunas de las filas en una fila, de modo que el marco de datos se vea así:
list_one ----------------------------- 0 apple, banana, cherry 1 grape, orange, pineapple¿Hay una manera simple de hacer esto?
Gracias por tomarse el tiempo para leer mi pregunta y ayudar en todo lo que pueda.
Prueba con groupby y agg :
>>> df.groupby(df.loc[df['list_one'].str.contains('\w+')].index.to_series().diff().ne(1).cumsum(), as_index=False).agg(', '.join) list_one 0 apple, banana, cherry 1 grape, orange, pineapple >>>Cree una máscara para las palabras coincidentes por Series.str.contains , invierta por ~ y cree grupos por Series.cumsum , filtre solo las filas coincidentes y pase a GroupBy.agg con la función de join :
m = df['list_one'].str.contains('\w+') df = df[m].groupby((~m).cumsum(), as_index=False).agg(', '.join) print (df) list_one 0 apple, banana, cherry 1 grape, orange, pineapple