我有一个DataFrame,我想选择在一列中具有特定值的行,并且上面的行在另一列中具有特定值。如果没有for循环,我该怎么做?
例如:
df = pd.DataFrame({'one': [1,2,3,4,1,2,3,4], 'two': [1,2,3,4,5,6,7,8]})
我希望在哪一行找到该行df.one
等于1
的行,上面行<{1}}等于{{1} },所以在示例行号4中,值为df.two
。
答案 0 :(得分:2)
您可以使用shift
尝试boolean indexing
:
print df
one two
0 1 1
1 2 2
2 3 3
3 4 4
4 1 5
5 2 6
6 3 7
7 4 8
print (df.one == 1) & (df.two.shift() == 4)
0 False
1 False
2 False
3 False
4 True
5 False
6 False
7 False
dtype: bool
print df[(df.one == 1) & (df.two.shift() == 4)]
one two
4 1 5