将串联字符串作为键传递时Pandas中的KeyError

时间:2017-09-11 20:47:38

标签: python pandas keyerror

我有一个数据帧'df',其列为'Call_ID',其中一个值为'888'。我有以下变量:

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

布尔索引支持字符串表达式,也不评估它们。您需要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