Я пытаюсь выполнить некоторые манипуляции с определенной частью кадра данных панд.Для этой цели я хотел бы получить представление о моем фрейме данных, сохранить его в переменной и работать с этой переменной (чтобы не приходилось каждый раз пересчитывать представление).Мой код на данный момент:
spikes.loc[(stims.at[i, 'StimOnset'] <= spikes['SpikeTimes']) & (spikes['SpikeTimes'] <= stims.at[i, 'StimOffset']), 'StimPeriod'] = True
temp = spikes.loc[(stims.at[i, 'StimOnset'] <= spikes['SpikeTimes']) & (spikes['SpikeTimes'] <= stims.at[i, 'StimOffset'])]
temp['StimPeriod'] = True
(извините, что это так долго, я не понимаю, почему это не должно работать, поэтому я позаботился о том, чтобы не включать все).Таким образом, первая строка выполняет необходимые вычисления, а две следующие - нет, и они также выдают предупреждение.Теперь я мог бы использовать стиль первой строки для нескольких вычислений, но это не кажется эффективным.Есть ли способ обойти это, чтобы сохранить желаемое представление в переменной?
Пример минимального кода для создания этого эффекта:
d = {'A': [1,3,5,7], 'B': [2,4,6,8]}
df = pd.DataFrame(data=d)
df.loc[(3 <= df['A']) & (df['A'] <= 5), 'A'] = 0
print df
df = pd.DataFrame(data=d)
temp = df.loc[(3 <= df['A']) & (df['A'] <= 5)]
temp['A'] = 0
print df
первая часть производит желаемый эффект,второй нет.Предупреждение выглядит следующим образом:
/ usr / local / lib / python2.7 / dist-packages / ipykernel_launcher.py: 8: SettingWithCopyWarning: значение пытается быть установлено для копиисрез из DataFrame.Попробуйте вместо этого использовать .loc [row_indexer, col_indexer] = значение
См. Предостережения в документации: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy