使用df.query使用特殊字符查询DataFrame列

时间:2018-03-21 17:03:41

标签: python pandas dataframe

我有一个数据框,如:

    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'

有什么想法吗?

2 个答案:

答案 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)

如果您将各列用反引号引起来,则同样可以使用