2016-08-25 104 views
0

我在這裏做錯了什麼,或者是否有bug。Python熊貓分組問題

df2是df1的複製/分片。但是,當我嘗試按列A對其進行分組並獲得來自C列的分組的最後一個值,創建新列'NewMisteryColumn'時,df1也獲得新的'NewMisteryColumn'

df2的最終結果是正確的。我也有不同的方式,我可以做到這一點,我不是在尋找一種不同的方法,只是想知道我是否偶然發現了一個錯誤。

我的問題是,是不是df1獨立於df2,爲什麼df1也獲得相同的列?

df1 = pd.DataFrame({'A':['some value','some value', 'another value'], 
          'B':['rthyuyu','truyruyru', '56564'], 
          'C':['tryrhyu','tryhyteru', '54676']}) 



df2 = df1 

df2['NewMisteryColumn'] = df2.groupby(['A'])['C'].tail(1) 
+0

如果你不打算修改'然後df1'取副本'DF2 = df1.copy()'' – EdChum

+0

df1'和'df2'只是同一個對象的兩個名字。這就是Python變量賦值的工作原理---請參閱[這個答案](http://stackoverflow.com/a/6794990/509824)對圖表的一個很好的解釋。 –

回答

1

問題是,df2只是對DataFrame的另一個引用。

df2 = df1 
df3 = df1.copy() 

df1 is df2 # True 
df1 is df3 # False 

您也可以驗證IDS ...

id(df1) 
id(df2) # Same as id(df1) 
id(df3) # Different!