从这个简单的数据框开始df
:
col1,col2 1,3 2,1 3,8
我想mask
在列的名称函数中应用布尔值.我知道价值观很容易:
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
正如所料.现在我想根据列名获得一个布尔掩码,如:
mask = df == df['col_1']
哪个应该返回:
面具
col1 col2 0 True False 1 True False 2 True False
编辑:
这看起来很奇怪,但我需要这些掩码后来通过列seaborn heatmaps过滤.
正如评论中所指出的那样,你需要得到一个像这样的"面具"的情况似乎很少见(很有可能,你不在其中一个).因此,在Pandas中可能没有很好的"内置"解决方案.
尽管如此,你可以使用如下的黑客来实现你所需要的,例如:
mask = (df == df) & (df.columns == 'col_1')
更新:.如注释中所述,如果数据框包含空值,则以这种方式计算的掩码将始终False
位于相应的位置.如果这是一个问题,更安全的选择是:
mask = ((df == df) | df.isnull()) & (df.columns == 'col_1')