Есть CSV вида: data1, data2. [[12 34][45 78]], [112 123 126 160] pd.read_csv() вычитывает массивы, как строки. Astype () не прокатывает. dtype=np.array — тоже. Если пробежаться по каждому элементу вручную, то, конечно, можно преобразовать строки в массивы с помощью np.fromstring (), но так делать не хочется. Есть же какой-то простой способ?
Pandas не хранит тип данных list/array, поэтому у вас не получается преобразовать.
Как распарсить?
Основной способ — метод explode. Он создаст строку для каждого элемента.
>>> import pandas as pd
>>> df = pd.DataFrame({'data1': [[[12, 34],[45, 78]],], 'data2': [[112, 123, 126, 160],]})
>>> df
data1 data2
0 [[12, 34], [45, 78]] [112, 123, 126, 160]
>>> df.explode('data1')
data1 data2
0 [12, 34] [112, 123, 126, 160]
0 [45, 78] [112, 123, 126, 160]
>>> df.explode('data2')
data1 data2
0 [[12, 34], [45, 78]] 112
0 [[12, 34], [45, 78]] 123
0 [[12, 34], [45, 78]] 126
0 [[12, 34], [45, 78]] 160
А вот способ добавить новые колонки:
>>> df[['a','b']] = df.data1.tolist()
>>> df
data1 data2 a b
0 [[12, 34], [45, 78]] [112, 123, 126, 160] [12, 34] [45, 78]