使用Limits获取索引名称pandas数据帧python

时间:2017-10-10 06:33:05

标签: python pandas limits

我有数据集的上限和下限,我希望能够为任何超出此范围的项目提取索引(最好在列表中):

  X1 X2 X3 X4 X5 X6 X7 X8 X9
1  1  7  6  0  7  3  0  0  8
2  4  8  3  4  9  6  3  2  3
3  3  7  5  5  7  5  1  1  4
4  2  6  2  1  3  9  4  3  9
5 10  2  2  6  4  7  4  9  7

#Have another data frame with our limits
  X1 X2 X3 X4 X5 X6 X7 X8 X9
1  1  7  3  4  7  3  0  0  3
2  4  8  9 10  9  6  3  2  8

所以我想得到指数1,4,5,因为在某些时候它们超出了我的极限。

我可以用这个:

llCheck = data < ll
hlCheck = data > hl

llCheck = 
X1    X2    X3    X4    X5    X6    X7    X8    X9
False False False True  False False False False False
False False False False False False False False False
False False False False False False False False False
False True  True  True  True  True  True  True  True
True  True  True  False True  True  True  True  False

并获取两个数据框,其中包含每个单元格的true / false值,我认为这些值很有用,但如果row = true中的任何项目,则无法获得更多索引。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我认为您需要使用DataFrame.any过滤index值:

ll = 0
hl = 2

m = (df > ll) & (df < hl)
L = df.index[m.any(axis=1)].tolist()
print (L)
[1, 3, 4]

说明:

#get mask by limits with chaining both conditions
m = (df > ll) & (df < hl)
print (m)
      X1     X2     X3     X4     X5     X6     X7     X8     X9
1   True  False  False  False  False  False  False  False  False
2  False  False  False  False  False  False  False  False  False
3  False  False  False  False  False  False   True   True  False
4  False  False  False   True  False  False  False  False  False
5  False  False  False  False  False  False  False  False  False

#check if at least one True per row
print (m.any(axis=1))
1     True
2    False
3     True
4     True
5    False
dtype: bool

#is possible filter rows
print (df[m.any(axis=1)])
   X1  X2  X3  X4  X5  X6  X7  X8  X9
1   1   7   6   0   7   3   0   0   8
3   3   7   5   5   7   5   1   1   4
4   2   6   2   1   3   9   4   3   9