2017-06-15 63 views
0

我想切片在熊貓數據框,並將其保存到另一個數據框。假設df是一個現有的數據框,我想將它的某個部分分成df1。但是,我得到這樣的警告:熊貓設置與複製警告

/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:25: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame 

我在SO討論類似的問題,檢查各崗位(其中兩個以下):

  1. Setting with copy warning

  2. How to deal with SettingWithCopyWarning in Pandas?

通過這些鏈接,我是ab樂找到下面的行

Years=['2010','2011'] 
    for key in Years: 
     df1['GG'][key]=df[key][df[key].Consumption_Category=='GG'] 

,我再改爲以下

Years=['2010','2011'] 
    for key in Years: 
     df1['GG'][key]=df[key].loc[df['2010'].iloc[:,0]=='GG'] 

和逃脫警告問題。

但是,當我包含另一行從此數據框中刪除某一列時,我再次發出警告,我無法排除。

Years=['2010','2011'] 
    for key in Years: 
     df1['GG'][key]=df[key].loc[df['2010'].iloc[:,0]=='GG'] 
     df1['GG'][key]=df1['GG'][key].drop(['Consumption_Category'],axis=1,inplace=True) 

回答

1

最後,經過大量的研究,並通過熊貓文檔,我找到了我的問題的答案。我得到的警告是因爲我已將inplace=True放在drop()函數中。所以,我刪除了inplace=True並將結果保存到新的datafrmae中。現在我沒有收到任何警告。

Years=['2010','2011'] 
    for key in Years: 
     df1['GG'][key]=df[key].loc[df['2010'].iloc[:,0]=='GG'] 
     df1['GG'][key]=df1['GG'][key].drop(['Consumption_Category'],axis=1)