2016-01-15 45 views
0

我有以下代碼:爲什麼熊貓只給我一個SettingWithCopyWarning?

import pandas as pd 
import numpy as np 
mydf = pd.DataFrame({'UID':[1,2,3], 
        'Price':[10,20,30], 
        'Shipped':[2,4,6]}) 
grouped = mydf.groupby('UID').aggregate(np.sum) 
# Call 1 
mydf['Price'].loc[:] = np.round(grouped['Price'], 2) 
# Call 2 
mydf['Shipped'].loc[:] = grouped['Shipped'] 

,我前面有Call 1沒有錯誤或警告執行就行了。我在Call 2之前的行導致SettingWithCopyWarning錯誤。爲什麼會導致錯誤而不是其他?爲了擺脫這個錯誤,我可以在第二次電話中做些什麼?

我的代碼執行得很好,每當我運行測試時看到這一個單獨的錯誤,我都很累。

+0

什麼是你的大熊貓版本? 0.17.1 – EdChum

+0

pd .__ version__返回'0.17.0',並且我在Windows 7上運行Python 3.4.3版。 – wesanyer

+0

OK我可以重現,如果刪除loc調用,則不會有警告:'mydf ['Price'] = np.round(分組['價格'],2) #致電2 mydf ['發貨'] =分組[[發貨]]'事情,你會得到同樣的警告 – EdChum

回答

1

沒有SettingWithCopyWarning錯誤

mydf['Shipped'].values[:] = grouped['Shipped'] 
+0

這會產生IndexError:數組索引太多 ' – EdChum

+0

確實,但'... values [:]'很好。如果你更新你的答案,我會將其標記爲已接受。 – wesanyer

+0

Nvm,這實際上不起作用。它最終搞亂了我的np.sum()在一些有問題的列上。可能是由於NaN的? – wesanyer

相關問題