首页 > 解决方案 > 具有双索引的 Pandas 查询

问题描述

对于具有双列索引的数据帧,我在使用 pandas 查询中的布尔索引时遇到问题。

我有以下数据框:

df2 =

        val1            val2
        mean    size    mean    size
col1                
    c   2.5        2    5   2
    d   4.5        2    9   2
    e   0.5        2    1   2

其中 val1 和 val2 是第一级列索引,mean 和 size 是第二级索引。

然后我想使用如下语法选择第一列 ('val1','mean') > 3 的行:

df2.query('(val1, mean) > 3')

我知道这可以通过

df2[df2[('val1','mean')] > 3], 

但我想知道是否可以在查询中使用,因为语法更简洁。

标签: pythonpandasdataframe

解决方案


让我们试试这个:

isin 返回一个布尔系列并 ~ 否定布尔系列

df.apply(lambda x: x['column_name'] in x['column_name'], axis=1)

而不是“在”,你可以把你的条件,如> 3

df.loc[~df['column_name'].isin(some_values)]

或者

df['column_name'] >=  3

是的,有可能通过“查询”来执行它

df.query('(a < b) & (b < c)')

pydata:索引查询

pandas.dataframe


推荐阅读