我有一个数据帧'df',其列为'Call_ID',其中一个值为'888'。我有以下变量:
c = 'Call_ID'
v = '888'
q = 'df[c] == v'
df[df[c] == v]
工作正常。但是,df[q]
给了我关键错误。有什么建议吗?
答案 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