【问题标题】:KeyError in Pandas when passing concatenated string as key将串联字符串作为键传递时 Pandas 中的 KeyError
【发布时间】:2017-09-11 20:47:37
【问题描述】:

我有一个数据框“df”,其中包含“Call_ID”列,其中一个值为“888”。我有以下变量:

c = 'Call_ID'
v = '888'
q = 'df[c] == v'

df[df[c] == v] 工作正常。但是,df[q] 给了我关键错误。有什么建议吗?

【问题讨论】:

    标签: python pandas keyerror


    【解决方案1】:

    df[q] 正在寻找名为'df[c] == v' 的列。它不等同于df[c] == v,因为第一个是字符串,第二个是 Python 表达式。

    【讨论】:

      【解决方案2】:

      布尔索引支持字符串表达式,也不计算它们。你需要 query 代替:

      df.query('Call_ID == @v')
      

      或者,

      df.query('{} == "{}"'.format(c, v))
      

      df
      
          a  b  c
      0   1  1  a
      1   1  2  b
      2   1  3  c
      6   2  1  d
      7   2  2  e
      9   2  2  x
      10  2  1  x
      
      df.query("c == 'x'") 
      
          a  b  c
      9   2  2  x
      10  2  1  x
      

      【讨论】:

      • 使用 df.query('{} == "{}"'.format(c, v)) 给我语法错误
      • @Kshitij 如果它给你一个语法错误,你显然复制错了,不是吗?如您所见,这对我有用。
      • @COLDSPEED 我使用自定义表达式作为查询的参数。在使用 df.query(df.eval(my_exp)) 时,它终于起作用了。谢谢你的帮助:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 2016-08-05
      • 2020-06-16
      • 1970-01-01
      相关资源
      最近更新 更多