Форум сайта python.su
0
Почему print в конце и начале один и тот же??? Я же уже Каждый элемент явно присвоил!!
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
titanic=pd.read_csv('titanic.csv',index_col='PassengerId')
titanic=titanic.drop(,axis=1)
titanic=titanic.dropna(axis=0)
#Почему print в конце и начале один и тот же??? Я же уже Каждый элемент явно присвоил!!
print titanic.Sex.describe()
for c in titanic.Sex:
if c=='male':
c=1
else:
c=0
print c
print titanic.Sex.describe()
count 714
unique 2
top male
freq 453
Name: Sex, dtype: object
1
0
0
…
0
1
1
1
count 714
unique 2
top male
freq 453
Name: Sex, dtype: object
Офлайн
1
При итерации происходит копирование каждого элемента.
for c in titanic.Sex.index: if titanic.Sex.loc[c] == 'male': titanic.Sex.loc[c] = 1
Отредактировано kampella (Фев. 7, 2016 19:05:34)
Офлайн
0
Спасибо огромное. Так сработало. Нашел в документации, что оказывается при вызове двух и более индексов эта дрянь-) копирует срез.
Офлайн
1
Это не имеет значения на самом деле, при присваивании мы переопределяем значение и ссылку на область в памяти, те связь с начальным объектом разрывается:
>>> a = [1, [2], 3] >>> for c in a: ... print id(c) ... c = 0 ... print id(c) ... 11878744 11878768 140024024727496 11878768 11878696 11878768 >>> a [1, [2], 3]
>>> a = [[1], [2], [3]] >>> for c in a: ... print id(c) ... c[0] = 666 ... print id(c) ... 140024024653480 140024024653480 140024024724112 140024024724112 140024024776784 140024024776784 >>> a [[666], [666], [666]]
Отредактировано kampella (Фев. 7, 2016 22:25:45)
Офлайн