更新查询返回的索引处的数据框

时间:2018-06-20 08:13:04

标签: python pandas dataframe

我希望查询返回一个视图,以便我可以修改字段而不会产生此错误。

  

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),但似乎很浪费,我正在寻找更有效的方法。

1 个答案:

答案 0 :(得分:1)

pd.DataFrame.query设计用于查询,而不是设置值。如果要将字符串查询用作掩码,则可以计算索引并将其输入pd.DataFrame.loc

df.loc[df.query(q).index, 'dest'] = 'toto'