python - 使用 df.query 查询具有特殊字符的 DataFrame 列

标签 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=="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/

相关文章:

python - 使用值列表从 Pandas 数据框中选择行

r - 如何获取每个类别的计数

python - 获取仅 7 :00 hrs 的数据的最 Pythonic 方法是什么

python - 如何在基于类的 View (模板 View )中进行多个模型查询

Python:找不到并安装 python 模块 'video'

具有多列的 Python Pandas 成对频率表

python - 检查列的每一行是否在范围内

python - 在python中创建一个临时表以与sql表连接

python - 基于分类列创建填充随机元素的新列

python - 如何根据python中的其他列将特定列值转换为一行?