当前位置:  开发笔记 > 编程语言 > 正文

pandas - 按列名掩盖数据帧

如何解决《pandas-按列名掩盖数据帧》经验,为你挑选了1个好方法。

从这个简单的数据框开始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过滤.



1> KT...:

正如评论中所指出的那样,你需要得到一个像这样的"面具"的情况似乎很少见(很有可能,你不在其中一个).因此,在Pandas中可能没有很好的"内置"解决方案.

尽管如此,你可以使用如下的黑客来实现你所需要的,例如:

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

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

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

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有