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

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

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 
  • Python - Pandas - Запись Dataframe в CSV
  • pandas time_range не начинается с даты начала
  • Импорт Pandas на сервере Apache вызывает ошибку тайм-аута
  • Как выбрать только определенные столбцы из DataFrame с столбцами MultiIndex?
  • Группа Панда и сумма
  • PyQt - столбец флажков в QTableView
  • Pandas эквивалент функции Oracle Lead / Lag
  • для цикла слишком долго для создания / экспорта вывода в Python
  • Python - лучший язык программирования в мире.