Панды: субиндексирующие данные: копирование и просмотр

Скажем, у меня есть фрейм данных

import pandas as pd import numpy as np foo = pd.DataFrame(np.random.random((10,5))) 

и я создаю еще один фрейм данных из подмножества моих данных:

 bar = foo.iloc[3:5,1:4] 

ли bar содержит копию этих элементов из foo ? Есть ли способ создать view этих данных? Если да, то что произойдет, если я попытаюсь изменить данные в этом представлении? Предоставляет ли Pandas какой-либо механизм копирования на запись ?

One Solution collect form web for “Панды: субиндексирующие данные: копирование и просмотр”

Ваш ответ лежит в документах pandas: return-a-view-versus-a-copy .

Всякий раз, когда в операции индексирования задействуется массив меток или булев вектор, результатом будет копия . При индексировании и нарезке одной метки / скаляра, например df.ix [3: 6] или df.ix [:, 'A'], будет возвращено представление .

В вашем примере bar представляет собой вид фрагментов foo . Если вы хотите получить копию , вы могли бы использовать метод copy . Модифицирующая bar также изменяет foo . У pandas нет механизма копирования на запись.

См. Мой пример кода ниже, чтобы проиллюстрировать:

 In [1]: import pandas as pd ...: import numpy as np ...: foo = pd.DataFrame(np.random.random((10,5))) ...: In [2]: pd.__version__ Out[2]: '0.12.0.dev-35312e4' In [3]: np.__version__ Out[3]: '1.7.1' In [4]: # DataFrame has copy method ...: foo_copy = foo.copy() In [5]: bar = foo.iloc[3:5,1:4] In [6]: bar == foo.iloc[3:5,1:4] == foo_copy.iloc[3:5,1:4] Out[6]: 1 2 3 3 True True True 4 True True True In [7]: # Changing the view ...: bar.ix[3,1] = 5 In [8]: # View and DataFrame still equal ...: bar == foo.iloc[3:5,1:4] Out[8]: 1 2 3 3 True True True 4 True True True In [9]: # It is now different from a copy of original ...: bar == foo_copy.iloc[3:5,1:4] Out[9]: 1 2 3 3 False True True 4 True True True 
  • строка в столбцы при сохранении части данных, отображение в одной строке
  • Как GroupBy Dataframe в пандах и сохранить столбцы
  • Выбирайте даты, когда YYYYMMDD и HH находятся в отдельных столбцах, используя pandas в Python
  • Переменный сдвиг в пандах
  • Как итеративно считать в Pandas Dataframe
  • python - Заполните пропущенные даты относительно конкретного атрибута в пандах
  • Как сделать разделитель в read_csv более гибким?
  • pandas fillna не работает
  • Python - лучший язык программирования в мире.