Pandas 选择至少有一个值高于阈值的所有列

Pandas 选择至少有一个值高于阈值的所有列,pandas,Pandas,我想选择至少有一个值高于阈值的列。 比如说, df = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)], 'B': [randint(1, 9)*10 for x in xrange(10)], 'C': [randint(1, 9)*100 for x in xrange(10)]}) df A B C 0 9 40 300 1 9

我想选择至少有一个值高于阈值的列。 比如说,

df = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)],
                   'B': [randint(1, 9)*10 for x in xrange(10)],
                   'C': [randint(1, 9)*100 for x in xrange(10)]})
df
   A   B    C
0  9  40  300
1  9  70  700
2  5  70  900
3  8  80  900
4  7  50  200
5  9  30  900
6  2  80  700
7  2  80  400
8  5  80  300
9  7  70  800
假设我想选择至少包含一个大于70的值的列。 在本例中,我希望看到以下数据帧作为输出

   df
       B    C
    0  40  300
    1  70  700
    2  70  900
    3  80  900
    4  50  200
    5  30  900
    6  80  700
    7  80  400
    8  80  300
    9  70  800
我能想到的唯一解决方案是循环遍历每一列,查看是否有任何值高于阈值例如,使用.any,然后将列数组传递给.filter。。。但这似乎是一个非常尴尬的解决方案。有更好的办法吗

将df.columns与以下内容一起使用:

输出:

    B    C
0  40  100
1  20  100
2  80  500
3  60  800
4  10  300
5  70  800
6  50  200
7  40  600
8  40  200
9  20  200
将df.columns与以下内容一起使用:

输出:

    B    C
0  40  100
1  20  100
2  80  500
3  60  800
4  10  300
5  70  800
6  50  200
7  40  600
8  40  200
9  20  200
可以使用loc沿列使用布尔切片

可以使用loc沿列使用布尔切片

df.loc[:, df.gt(70).any()]

    B    C
0  40  100
1  20  100
2  80  500
3  60  800
4  10  300
5  70  800
6  50  200
7  40  600
8  40  200
9  20  200