Найти - Пользователи
Полная версия: DataFrame не изменятся. Почему??? помогите, плз.
Начало » Python для новичков » DataFrame не изменятся. Почему??? помогите, плз.
1
Oleg_S

Почему 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
kampella
При итерации происходит копирование каждого элемента.

for c in titanic.Sex.index:
if titanic.Sex.loc[c] == 'male':
    titanic.Sex.loc[c] = 1
Oleg_S
Спасибо огромное. Так сработало. Нашел в документации, что оказывается при вызове двух и более индексов эта дрянь-) копирует срез.
kampella
Это не имеет значения на самом деле, при присваивании мы переопределяем значение и ссылку на область в памяти, те связь с начальным объектом разрывается:
>>> 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]]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB