从这个简单的数据框 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')
