Skip to main content
 首页 » 编程设计

python之pandas之按列名屏蔽数据框

2025年05月04日14mate10pro

从这个简单的数据框 df 开始:

col1,col2 
1,3 
2,1 
3,8 

我想在列名函数中应用一个 bool 值掩码。我知道值(value)观很容易:

mask = df <= 1 
 
df = df[mask] 

返回:

面具:

    col1   col2 
0   True  False 
1  False   True 
2  False  False 

df:

   col1  col2 
0     1   NaN 
1   NaN     1 
2   NaN   NaN 

如预期。现在我想根据列名获取一个 bool 掩码,例如:

mask = df == df['col_1'] 

应该返回:

面具

    col1   col2 
0   True  False 
1   True  False 
2   True  False 

编辑:

这看起来很奇怪,但我需要那种掩码以便稍后按列 seaborn 热图进行过滤。

请您参考如下方法:

正如评论中所指出的,您需要获得像这样的“面具”的情况似乎很少见(很可能,您不在其中之一)。因此,Pandas 中可能没有适合它们的“内置”解决方案。

尽管如此,您还是可以实现所需的,例如使用如下 hack:

mask = (df == df) & (df.columns == 'col_1') 

更新:。如评论中所述,如果您的数据框包含空值,则以这种方式计算的掩码在相应位置将始终为 False。如果这是一个问题,更安全的选择是:

mask = ((df == df) | df.isnull()) & (df.columns == 'col_1')