Есть ли способ создать один столбец pandas DataFrame из списка без копирования списка?

Я считаю, что одной из основных причин, по которой мне это нужно, является разделение путей файла на обоих / и \. Это немного сложное регулярное выражение, поэтому я отправлю его здесь для справки:

var splitFilePath = filePath.split(/[\/\\]/);
1
задан mmnormyle 13 July 2018 в 18:47
поделиться

1 ответ

Когда вы назначаете свой список в серию, создается новый массив NumPy. Эта структура данных допускает векторизованные вычисления для числовых типов. Такие серии выложены в смежных блоках памяти. См. . Почему NumPy вместо списков Python? для более подробной информации.

Поэтому вам понадобится достаточно памяти для хранения дублированных данных. Это неизбежно. Невозможно «преобразовать» список в ряд Pandas на месте.

Примечание: приведенное выше не относится к тому, что происходит, когда вы назначаете массив NumPy ряду.

1
ответ дан jpp 17 August 2018 в 12:21
поделиться
  • 1
    Но очевидный вопрос для меня тогда заключается в том, были ли значения в массиве начальными, и являются ли значения в df одним и тем же объектом. Я собираюсь проверить это, но я думаю, что это может быть суть вопроса. – roganjosh 13 July 2018 в 17:19
  • 2
    Значения в списке и значения в серии не могут быть одним и тем же объектом. Их не может быть, потому что они должны быть выложены в самых разных макетах памяти. Во-первых, нет указателей в массиве float или int, а в списке Python. – jpp 13 July 2018 в 17:21
  • 3
    Кажется, это не так: a = np.arange(10); df = pd.DataFrame(a); a[0] = 15 – roganjosh 13 July 2018 в 17:22
  • 4
    Но a здесь не список! – jpp 13 July 2018 в 17:22
  • 5
    @roganjosh, Yup, я обновил ответ, пока мы размышляем над вашим вопросом. – jpp 13 July 2018 в 17:35
Другие вопросы по тегам:

Похожие вопросы: