обновить фрейм данных по индексам, возвращаемым запросом

1

Я хотел бы, чтобы запрос возвращал представление, чтобы я мог изменять поля, не генерируя эту ошибку.

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), но это кажется пустой тратой, я ищу что-то более эффективное.

Теги:
pandas
dataframe

1 ответ

1
Лучший ответ

pd.DataFrame.query предназначен для запросов, а не для установки значений. Если вы хотите использовать строковые запросы в качестве масок, вы можете рассчитать индекс и pd.DataFrame.loc в pd.DataFrame.loc:

df.loc[df.query(q).index, 'dest'] = 'toto'
  • 0
    Большое спасибо, кажется, отлично работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню