【问题标题】:update a dataframe at indices returned by query在查询返回的索引处更新数据框
【发布时间】:2018-06-20 16:21:15
【问题描述】:

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

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) 但这似乎是一种浪费,我正在寻找更有效的东西。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2022-11-17
      • 1970-01-01
      • 2020-01-13
      相关资源
      最近更新 更多