У меня есть набор данных Pandas с одним строковым столбцом, содержащим последовательность чисел с запятыми, разделенных запятыми (как одна большая строка):
4677579 -0.26751,0.559024,0.690269,0.0446298,0.967434,...
5193597 -0.587694,0.15063,-0.163831,-0.696565,0.972488...
596398 -0.732648,0.69533,0.722288,-0.0453636,0.435788...
5744417 -0.354733,-0.782564,-0.301927,0.263827,0.96237...
2464195 -0.326526,0.341944,0.330533,-0.250108,0.673552...
Итак, первая строка имеет следующий формат:
{4677579: '-0.26751,0.559024,[..skipped..],-0.394059,0.974787'}
Мне нужно преобразовать этот столбец в (предпочтительно 2D NumPy) массив с плавающей точкой:
array([[-2.67510e-01, 5.59024e-01, 6.90269e-01, skipped, 4.45222e-01, -1.82369e-01],
[-5.87694e-01, 1.50630e-01, -1.63831e-01, skipped, 9.47768e-01]])
Проблема состоит в том, что набор данных очень большой (> 10M строк,> 400 поплавков / строка), и мои наивные подходы к конвертации, такие как:
vectordata.apply(lambda x: np.fromstring(x, sep=','))
или
vectordata.apply(lambda x: list(map(float,x.split(','))))
просто тайм-аут (они работают нормально, если общий размер набора данных < 5 миллионов строк).
Есть идеи, как можно оптимизировать эту операцию, чтобы она работала с большим набором данных?