根据多行

时间:2016-03-30 07:26:56

标签: python pandas dataframe

我有一个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

1 个答案:

答案 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