2014-11-12 3 views
0

У меня есть dataframe df4. С этого момента я получаю dataframe df_upper После изменения df_upper df4 показывает ту же самую модификацию, хотя Я не изменял сам df4. Почему это и как его избежать? Является ли это связанным с пандой или общим python-связанным?Назначение Dataframe

stepsize=0.1 
df_upper=df4 
df_upper['strike']=df_upper['strike']+stepsize 
print df4 
print df_upper 
+0

Это сидит в ядре питона. когда вы присваиваете что-то вроде 'x = df4', вы просто связываете это имя' x' с объектом, представленным 'df4'. это то, как работает python, и это важно понять. – acushner

ответ

1

Вы должны использовать df.copy() для явного копирования объекта pandas.

+0

Итак, это только для объектов Панды? – user3276418

+0

это манифестация Pandas подхода python. Вот сообщение в блоге о 'call on value' vs 'call by reference' http://www.jeffknupp.com/blog/2012/11/13/is-python-callbyvalue-or-callbyreference-neither/ –

+0

Большое спасибо много для того, чтобы направить меня на это. Я совершенно не знал об этом. Согласно [link] (http://www.jeffknupp.com/blog/2012/11/13/is-python-callbyvalue-or-callbyreference-neither/) списки также изменяемы. Однако, когда я пытаюсь использовать i = [1] j = i j = [2] print i i не мутирован. – user3276418

Смежные вопросы