почему new_data2 не является копией, даже если я использовал метод .copy () [pandas] - PullRequest
0 голосов
/ 09 мая 2020

я читал просмотры против копий в pandas (ссылки: 1 2 3 ), и я экспериментировал с фреймом данных после нарезки и копирования с атрибутами _is_copy и _is_view . Но не могу понять это полностью.

Из документации,

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

снимок

code-snaphsot

код

# In[1] :
import pandas as pd

# In[2]:

data=pd.read_csv('titanic.csv')
data.head()

# In[4]:
#copying a column 

new_age=data.age.copy()

# In[6]:
#checking wheather the copied data is view or a copy

new_age._is_view, new_age._is_copy is None                   
#Fine : it a copy, not view

# In[7]:
#Now doing another operation

new_data1=data.loc[data.age<10,:]
new_data2=data.loc[data.age<10,:].copy()

# In[8]:
# checking if it is a view  

new_data1._is_view, new_data2._is_view                        
# Both are not view : thus a copy

# In[10]:
new_data1._is_copy is None, new_data2._is_copy is None     

# as first results a false, new_data1 is copy
# while the second new_data2 is neither a copy nor view even if copy() is used
  • поэтому, когда я пытался скопировать один столбец, _is_view и _is_copy работали должным образом . Это действительно была копия.

  • Когда я пытался получить данные элементов, возраст которых <1, т.е. new_data1 без метода copy (), это была копия, поскольку я выполнял логическое маскирование . Таким образом, для is_copy не установлено значение Нет. </p>

Вопросы

Q1. А затем, когда я использовал copy () для получения элементов и присвоения new_data2, это не было ни копией, ни представлением.

 new_data2._is_view          # False 

 new_data2._is_copy is None  #True

Тогда что такое new_data2? копировать или просматривать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...