Confusão re: pandas cópia da fatia de aviso dataframe

Analisei várias perguntas e respostas relacionadas a esse problema, mas continuo descobrindo que estou recebendo esta cópia do aviso de fatia em locais onde não o espero. Além disso, está surgindo um código que estava funcionando bem para mim anteriormente, levando-me a pensar se algum tipo de atualização pode ser o culpado.

Por exemplo, este é um conjunto de códigos em que tudo o que estou fazendo é ler um arquivo do Excel em um pandaDataFramee cortando o conjunto de colunas incluídas nodf[[]] sintaxe.

 izmir = pd.read_excel(filepath)
 izmir_lim = izmir[['Gender','Age','MC_OLD_M>=60','MC_OLD_F>=60','MC_OLD_M>18','MC_OLD_F>18','MC_OLD_18>M>5','MC_OLD_18>F>5',
               'MC_OLD_M_Child<5','MC_OLD_F_Child<5','MC_OLD_M>0<=1','MC_OLD_F>0<=1','Date to Delivery','Date to insert','Date of Entery']]

Agora, quaisquer outras alterações que eu fizer nesteizmir_lim arquivo aumentar a cópia do aviso de fatia.

izmir_lim['Age'] = izmir_lim.Age.fillna(0)
izmir_lim['Age'] = izmir_lim.Age.astype(int)

/Users/samlilienfeld/anaconda/lib/python3.5/site-packages/ipykernel/a Principal.py: 2: SettingWithCopyWarning: um valor está tentando ser definido em uma cópia de uma fatia de um DataFrame. Tente usar .loc [index_dax, col_indexer] = value

Estou confuso porque pensei que odf[[]] o subconjunto de colunas retornou uma cópia por padrão. A única maneira que encontrei para suprimir os erros é adicionando explicitamentedf[[]].copy(). Eu poderia jurar que, no passado, não precisava fazer isso e não levantei a cópia do erro de fatia.

Da mesma forma, eu tenho outro código que executa uma função em um quadro de dados para filtrá-lo de certas maneiras:

def lim(df):
if (geography == "All"):
    df_geo = df
else:
    df_geo = df[df.center_JO == geography]

df_date = df_geo[(df_geo.date_survey >= start_date) & (df_geo.date_survey <= end_date)]

return df_date

df_lim = lim(df)

Desse ponto em diante, quaisquer alterações que eu fizer em qualquer um dos valores dedf_lim aumente a cópia do erro de fatia. A única maneira de contornar isso que encontrei é alterar a chamada de função para:

df_lim = lim(df).copy()

Isso parece errado para mim. o que estou perdendo? Parece que esses casos de uso devem retornar cópias por padrão, e eu poderia jurar que, na última vez em que executei esses scripts, não estava executando esses erros.
Eu só preciso começar a adicionar.copy() por todo o lugar? Parece que deve haver uma maneira mais limpa de fazer isso. Qualquer insight ou ajuda é muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion