Я пытаюсь понять, когда я получаю копию против представления при использовании метода .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строки ??