2017-01-26 4 views
3

を引き起こし、私の次のコード行は、警告の原因:df.locがSettingWithCopyWarning警告メッセージ

import pandas as pd 

s = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD')) 
s.loc[-1] = [5,np.nan,np.nan,6] 
grouped = s.groupby(['A']) 
for key_m, group_m in grouped: 
    group_m.loc[-1] = [10,np.nan,np.nan,10] 

C:\Anaconda3\lib\site-packages\ipykernel\__main__.py:10: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame 

documentationによれば、これは何が起こっているかように、行うための推奨される方法ですか?

ありがとうございました。

+1

をできた代わりに

df = some_other_df.loc[:, [cols]] 

をこれを行うことを示唆しますdfの作成からこの行までの完全なコード – EdChum

答えて

3

ドキュメントは少し混乱しています。

dataframeは別のdataframeのコピーです。これを確認するには、bool(df.is_copy)を実行してください。このコピーに割り当てようとしているため、警告が表示されています。

まず、dfをどのように構築しておくべきかを説明する警告/文書があります。それがコピーであるので、どのようにそれに割り当てるべきではありません。

df = some_other_df[cols] 

は、some_other_dfのコピーをdfとする。警告は今、それが行われていること、この警告を無視することを選択した場合、あなたはあなたが表示する必要が

df = df.copy() 

または

df.is_copy = None 
関連する問題