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