我有一个数据框,例如:
cat.c1 cat.c2 cat.c3 name
0 tony NaN NaN groupA
1 Magoo {} NaN groupA
2 Jon NaN {} groupA
查询例如
df.query('name=="groupA"')
但我想查询带前缀的列。
我尝试: df.query('cat.c1=="tony"')
我得到:
KeyError: 'cat'
有什么想法吗?
最佳答案
query
对可以查询的列有限制。我喜欢遵循的经验法则是,如果名称不是有效的 python 标识符名称,那么它就不起作用。
您唯一的选择是直接使用 bool 最大值进行索引。
df[df['cat.c1'] == "tony"]
或者,您可能想去掉那些讨厌的前缀,或者干脆将它们全部加入。
df.columns.str.split('.').str.join('_')
Index(['cat_c1', 'cat_c2', 'cat_c3', 'name'], dtype='object')
重新分配列名称,然后您可以使用查询
:
df.query('cat_c1 == "tony"')
关于python - 使用 df.query 查询具有特殊字符的 DataFrame 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49412488/