使用布尔索引时返回前一行



问题

使用布尔索引时,如何返回前一行以及满足条件的行?

示例

sodf = pd.Series([9,10,10,9,10,11])
sodf
0     9
1    10
2    10
3     9
4    10
5    11
dtype: int64

布尔条件:

sodf[sodf == 11]
5    11

所需输出:

4    10
5    11

您可以获得sodf==11的索引,然后再获得loc的值-1。

以下是操作方法。

import pandas as pd
sodf = pd.Series([9,10,10,9,10,11])
x = sodf[sodf == 11].index[0]
print (sodf.loc[x-1:])

输出为:

4    10
5    11

如果你只想要前一行的值,那么你也可以给出

print (sodf.loc[x-1])

输出将只是值,因为这是一个带有一列的pd.Series:

10

试试这样的东西:

i = sodf[(sodf == 9)].index
i = i.union(i-1)
i = i[i>=0]
sodf[i]

输出

0     9
2    10
3     9
dtype: int64

最新更新