2017-09-20 3 views
3

は誰かが次のように私はすべてのオプションを試してやってきた私にのpythonパンダDATAFRAMEコピー '='

df2 = df1 

df2 = df1.copy() 

df3 = df1.copy(deep=False) 

の違いを説明してもらえ:

df1 = pd.DataFrame([1,2,3,4,5]) 
df2 = df1 
df3 = df1.copy() 
df4 = df1.copy(deep=False) 
df1 = pd.DataFrame([9,9,9]) 

と、次のように返さ:

df1: [9,9,9] 
df2: [1,2,3,4,5] 
df3: [1,2,3,4,5] 
df4: [1,2,3,4,5] 

をので、私は間の出力に差を観察していませんおよび.copy(deep=False)。どうして?

私は「=」、コピー()、コピー(深い=偽)のいずれかのオプションが[9,9,9]

私は何をしないのですが返すようにしてください期待していますか?

答えて

3

作成するさまざまなDataFramesのオブジェクトIDが表示されている場合は、何が起きているのかを明確に確認できます。

df2 = df1と書くと、df2という名前の変数が作成され、idが4541269200のオブジェクトでバインドされます。 df1 = pd.DataFrame([9,9,9])と記述すると、4541271120のという新しいオブジェクトが作成され、変数df1にバインドされますが、df1にバインドされていたidが4541269200のオブジェクトは引き続き有効です。そのオブジェクトにバインドされた変数がない場合、Pythonによってガベージコレクションが行われます。

In[33]: import pandas as pd 
In[34]: df1 = pd.DataFrame([1,2,3,4,5]) 
In[35]: id(df1) 
Out[35]: 4541269200 

In[36]: df2 = df1 
In[37]: id(df2) 
Out[37]: 4541269200 # Same id as df1 

In[38]: df3 = df1.copy() 
In[39]: id(df3) 
Out[39]: 4541269584 # New object, new id. 

In[40]: df4 = df1.copy(deep=False) 
In[41]: id(df4) 
Out[41]: 4541269072 # New object, new id. 

In[42]: df1 = pd.DataFrame([9, 9, 9]) 
In[43]: id(df1) 
Out[43]: 4541271120 # New object created and bound to name 'df1'. 

In[44]: id(df2) 
Out[44]: 4541269200 # Old object's id not impacted. 
+1

こんにちは!しかし、df1.copy()とdf1.copy(deep = False)の違いは何ですか?この違いを示すために例を改善できますか? – karolszk

0

ディープコピーは、それに含まれるすべてのオブジェクトの新しいIDを作成します。通常のコピーでは、親からの要素のみがコピーされ、コピー先の変数には新しいIDが作成されます。

[9,9,9]を表示df2df3df4のいずれも理由がある:

In[33]: import pandas as pd 
In[34]: df1 = pd.DataFrame([1,2,3,4,5]) 
In[35]: id(df1) 
Out[35]: 4541269200 

In[36]: df2 = df1 
In[37]: id(df2) 
Out[37]: 4541269200 # Same id as df1 

In[38]: df3 = df1.copy() 
In[39]: id(df3) 
Out[39]: 4541269584 # New object, new id. 

In[40]: df4 = df1.copy(deep=False) 
In[41]: id(df4) 
Out[41]: 4541269072 # New object, new id. 

In[42]: df1 = pd.DataFrame([9, 9, 9]) 
In[43]: id(df1) 
Out[43]: 4541271120 # New object created and bound to name 'df1'. 
関連する問題