2016-09-08 4 views
3

У меня есть 3 Dataframes df1, df, df3, все копирующие исходный Dataframe df0.Копирование и изменение Dataframe Pandas

df1=df0 
df2=df0 
df3=df0 

df1=dfo.iloc[1:,1:].div(dfo.iloc[1:,1:].sum(axis=1),axis=0) 
df2=dfo.iloc[1:,1:].div(dfo.iloc[1:,1:].sum(axis=1),axis=0)*ACCOUNT_CASH 
df3=df2//df0 

print(df1) 
print(df2) 
print(df3) 

Как-то это не работает, я не получаю ошибку, но когда я печатаю df1 df2 DF3 все мои dataframes одинаковы! Однако они отличаются от df0. Это потому, что все они указывают на одно и то же пространство в памяти, и поэтому изменение любого указателя фактически изменяет все переменные? Если да, то как я могу заставить его работать хорошо. Я попытался скопировать (deep = True) с неубедительными результатами. Благодарности

ответ

2

Ваши линии

df1=df0 
df2=df0 
df3=df0 

просто создать три новые привязки, где три новых названия относятся к тому же объекту как что связанно с помощью df0.

Чтобы создавать копии, используйте pd.DataFrame.copy:

df1=df0.copy() 
df2=df0.copy() 
df3=df0.copy() 
+0

это решить ее! Не могли бы вы объяснить, почему copy (deep = True) не сработал? Спасибо – uniXVanXcel

+0

@Pythus Интересно - я посмотрю на него (чуть позже, боюсь). –

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