我有一个数据框,如:
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 =="托尼"&#39)
我明白了:
KeyError: 'cat'
有什么想法吗?
答案 0 :(得分:1)
query
对您可以使用它查询的列有限制。我想遵循的经验法则是,如果名称不是有效的python标识符名称,那么它就不会起作用。
您唯一的选择是直接使用布尔最大值
进行索引df[df['cat.c1'] == "tony"]
或者,你可能想要摆脱那些讨厌的前缀,或者只是加入它们。
df.columns.str.split('.').str.join('_')
Index(['cat_c1', 'cat_c2', 'cat_c3', 'name'], dtype='object')
重新分配列名,然后您可以使用query
:
df.query('cat_c1 == "tony"')
答案 1 :(得分:0)
如果您将各列用反引号引起来,则同样可以使用