Извлечение данных в виде списка из кадра данных Pandas с сохранением порядка - PullRequest
0 голосов
/ 11 октября 2018

Предположим, у меня есть некоторый кадр данных Pandas df, в котором есть столбец под названием "ВЫСОТА" среди многих других столбцов.

Если я выдаю list(df["HEIGHT"]), то это даст мне список элементов втот столбец в точном порядке, в котором они были в кадре данных, то есть упорядочены по индексу кадра данных.

Это всегда так?Команда df["HEIGHT"] вернет Серию, а list() преобразует ее в список.Но всегда ли эти операции сохраняют порядок?Интересно, что в [книге 1 автора Панд (!) Из моего прочтения до сих пор мне неясно, когда эти элементарные операции сохраняют порядок;всегда ли порядок сохраняется, или есть какое-то простое правило, чтобы знать, когда порядок должен быть сохранен?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Заказ всегда будет сохранен.Когда вы используете функцию list, вы предоставляете ей итератор и создаете список, повторяя его.Для получения дополнительной информации об итераторах вы можете прочитать PEP 234 об итераторах.

Порядок итераций определяется предоставленным им итератором.Итераторы для серии предоставляются pd.Series.__iter__() (стандартный способ доступа к итератору для объекта, который ищется методом list и аналогичными).Для получения дополнительной информации об итерации и индексировании в Pandas рассмотрите чтение соответствующего справочного раздела API *1009* и гораздо более подробную документацию по индексированию .

0 голосов
/ 11 октября 2018

Порядок элементов в серии панд (т. Е. Столбец в кадре данных панд) не изменится, если вы не сделаете что-то, что заставит его измениться.И порядок питона list гарантированно отражает порядок вставки ( SO thread ).

Так что да, df[0].tolist() (немного быстрее, чем list(df[0])) всегда должен даватьСписок элементов Python в том же порядке, что и элементы в df[0].

...