2016-03-17 11 views
5

Per prima cosa ho creato un nuovo frame DataFrame. Quindi creare un nuovo frame2 filtrando alcuni dati dal frame. Ora voglio assegnare un valore a frame2:pandas SettingWithCopyWarning dopo aver provato .loc

import numpy as np 
from pandas import DataFrame 

frame = DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'c', 'd'], columns=['Ohio', 'Texas', 'California']) 
mask = frame['Texas'] > 1 
print frame[mask] 
frame2 = frame.loc[mask] 
frame2.loc['c', 'Ohio'] = 'me' 
print frame2 

ma ho ottenuto questo avvertimento:

C:\Python27\lib\site-packages\pandas\core\indexing.py:461: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead 

perché continuo ottenuto questo avvertimento anche se ho usato la sintassi .loc consigliato? cosa dovrei fare per evitare questo avvertimento?

+0

sembra che ho trovato una soluzione possibile a: http://stackoverflow.com/questions/23688307/settingwithcopywarning-even-when-using-loc. qualcuno ha altre buone idee? – Osora

+0

Qual è la tua intenzione qui? vuoi aggiornare una copia o l'originale df – EdChum

+0

@EdChum Voglio aggiornare la copia. – Osora

risposta

4

Modifica

frame2 = frame.loc[mask] 

a

frame2 = frame.loc[mask].copy() 

elimina questo avvertimento.

+0

Ottimo! Che funzioni! Grazie ~! O (∩_∩) O – Osora

+0

Prego. In bocca al lupo! –

Problemi correlati