Tengo un marco de datos como este:
df = pd.DataFrame({'A': ['1', '2', '3'], 'B': ['aa', 'b', 'c']}) AB 0 1 aa 1 2 b 2 3 c Quiero convertir cada fila de la columna B en una lista. Por ejemplo, mi resultado deseado es algo como esto:
df_new AB 0 1 [aa] 1 2 [b] 2 3 [c]Creo que la solución de los comentarios es muy rápida:
df['B'] = df['B'].map(lambda i: [i])Más rápido es usar la comprensión de la lista:
df['B'] = [[i] for i in df['B']]Rendimiento :
df = pd.DataFrame({'A': ['1', '2', '3'], 'B': ['as', 'b', 'c']}) #30k rows df = pd.concat([df] * 10000, ignore_index=True) In [93]: %timeit df['B'].apply(lambda x: x.split(',')) 11.1 ms ± 963 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) In [94]: %timeit df['B'].str.split() 13.1 ms ± 788 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) In [96]: %timeit df['B'].map(lambda i: [i]) 7.15 ms ± 54.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) In [97]: %timeit df['B'].apply(lambda i: [i]) 7.21 ms ± 48.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) In [98]: %timeit df['B'].str.split(',') 13.9 ms ± 1.46 ms per loop (mean ± std. dev. of 7 runs, 100 loops each) In [99]: %timeit [[i] for i in df['B']] 5.84 ms ± 73.3 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)Podrías usar apply :
df['B'] = df['B'].apply(list) AB 0 1 [a] 1 2 [b] 2 3 [c]