user861938:
Tengo una trama de datos de esta manera:
A B C
[1,2,3] ['a','b','c'] ['aa', 'bb', 'cc']
[4,5,6] ['d','e','f'] ['dd', 'ee', 'ff']
[7,8,9] ['g','h','i'] ['gg', 'hh', 'ii']
Me gustaría combinar los valores de estas columnas de la siguiente manera:
[[[1,'a', 'aa'], [2,'b','bb'], [3, 'c', 'cc']], [[4,'d','dd'], [5,'e', 'ee'], [6,'f','ff']], [[7,'g','gg'], [8,'h','hh'], [9,'i','ii']]]
Mi idea era cambiar cada columna a la lista como esta (que dará una lista de lista):
first = df['A'].values.tolist()
# De manera similar para otras columnas
Y luego comprimir todas las listas e iterar a través de ellos a buscar a los valores correspondientes de cada lista y crear una nueva lista de acuerdo con el formato de salida. Sin embargo, estoy seguro de que hay mejores soluciones que la mía. Puede alguien ayudarme con esto?
YOBEN_S:
IIUC explode
congroupby
pd.concat([df[[x]].explode(x) for x in df.columns],axis=1)\
.apply(lambda x : x.tolist(),axis=1).groupby(level=0).agg(list).tolist()
Out[366]:
[[[1, 'a', 'aa'], [2, 'b', 'bb'], [3, 'c', 'cc']],
[[4, 'd', 'dd'], [5, 'e', 'ee'], [6, 'f', 'ff']],
[[7, 'g', 'gg'], [8, 'h', 'hh'], [9, 'i', 'ii']]]