问题
使用布尔索引时,如何返回前一行以及满足条件的行?
示例:
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