Я хотел бы, чтобы запрос возвращал представление, чтобы я мог изменять поля, не генерируя эту ошибку.
SettingWithCopyWarning: значение пытается установить на копии среза из DataFrame. Попробуйте вместо этого использовать.loc [row_indexer, col_indexer] = значение
См. Оговорки в документации: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
У меня есть многострочный (длинный) запрос q
который я сократил здесь:
df1 = pd.Dataframe(...)
q = "tcpstream==1 and ipsrc=='10.0.0.1' and sport==5201"
df = df1.query(q)
df['dest'] = "toto" # <--- this generates the warning/error
По-видимому, я мог бы сделать df1.update(df), но это кажется пустой тратой, я ищу что-то более эффективное.
pd.DataFrame.query
предназначен для запросов, а не для установки значений. Если вы хотите использовать строковые запросы в качестве масок, вы можете рассчитать индекс и pd.DataFrame.loc
в pd.DataFrame.loc
:
df.loc[df.query(q).index, 'dest'] = 'toto'