获取列“C”的所有行的条目大于“C”列中的前一个元素

时间:2018-02-15 14:37:51

标签: python-3.x pandas numpy

如何根据列选择满足条件的数据框的所有行,这与该列的每两个条目之间的关系有关。举一个具体的例子,假设我有一个DataFrame:

>>>df = pd.DataFrame({'A': [ 1, 2, 3, 4],
                      'B':['spam', 'ham', 'egg', 'foo'],
                      'C':[4, 5, 3, 4]})
>>> df
   A     B  C
0  1  spam  4
1  2   ham  5
2  3   egg  3
3  4   foo  4
>>>df2 = df[ return every row of df where C[i] > C[i-1] ]

>>> df2
   A    B  C
1  2  ham  5
3  4  foo  4

在pandas docs和here中有很多关于切片和索引的很好的信息,但我认为这有点复杂。我也可能错了。我正在寻找的是数据行,其中存储在C中的值不再单调下降。

感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

使用boolean indexingshift列值进行比较:

print (df[df['C'] > df['C'].shift()])
   A    B  C
1  2  ham  5
3  4  foo  4

<强>详细

print (df['C'] > df['C'].shift())
0    False
1     True
2    False
3     True
Name: C, dtype: bool

如果希望所有单调下降的行与列的diff进行比较:

print (df[df['C'].diff() > 0])
   A    B  C
1  2  ham  5
3  4  foo  4