Поймите, значение пытается быть установленным на копии среза из DataFrame - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь понять, когда я получаю копию против представления при использовании метода .loc для индексации данных.Получение представления для меня означает, что любые изменения в представлении будут перенесены в исходный df.Я ожидаю, что использование .loc даст мне копию.

В следующем примере я индексирую df тем же методом, но один дает мне копию, другой дает мне представление.Кто-то может указать, что мне не хватает?

a = pd.DataFrame([[1,2, 1], [2, 4,1], [3,4,1]])
b = a.loc[:, 1:3]
b.loc[:, 'tag'] = 'test'  # this is a copy?

b представляется копией, поскольку столбец 'tag' отображается только на b, а не на a.

b
Out[70]: 
   1  2   tag
0  2  1  test
1  4  1  test
2  4  1  test
a
Out[71]: 
   0  1  2
0  1  2  1
1  2  4  1
2  3  4  1

c = a.loc[0:1, :]
c.loc[0, :] = 100 # why this is a view??
c

cкажется, вид б.Потому что изменения на b переносятся в a.

Out[74]: c
     0    1    2
0  100  100  100
1    2    4    1
a
Out[75]: a
     0    1    2
0  100  100  100
1    2    4    1
2    3    4    1

Любая причина, почему a.loc [:, 1: 3] дает мне 3 строки, а a.loc [0: 1,:] дает мне 2строки ??

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