2016-12-22 178 views
4

我一直都取得了新的欄目:熊貓 - 使用下面的創建在大熊貓新列

df['new_column'] = value 

我使用這種方法,但是,我接收到警告設置的副本。

如何在不創建副本的情況下創建新列?

+9

這種方式是幾種正確方法之一。你得到的警告是因爲'df'是別的東西的副本,現在你正在嘗試改變'df'。你應該確保你可以把'df'與你從中拷貝的東西分開。一旦你是,你可以'df.is_copy = None'或'df = df.copy()'。還有其他的方式來處理它。我想確保我從未看到過這種方式,即當我從其他源創建'df'時,通常會執行'df = other_df.loc [:,:]''使用'loc'爲我解耦。而'df = other_df [my_cols]'不。 – piRSquared

+0

爲python和pandas提供版本,以明確縮小警告的根源。 – Leb

+0

我將問題解釋爲:如何對現有DataFrame執行就地修改,其中修改是通過向現有DataFrame分配更多內存來創建新列,而不是將其複製。 – ely

回答

4

嘗試使用

df.loc[:,'new column'] = value 

由於piRSquared評論,df可能是另一種數據幀的副本,當你設置值df它可能會帶來在所謂鏈索引。有關更多信息,請參閱pandas docs