如何根据列选择满足条件的数据框的所有行,这与该列的每两个条目之间的关系有关。举一个具体的例子,假设我有一个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中的值不再单调下降。
感谢任何帮助!
答案 0 :(得分:2)
使用boolean indexing
与shift
列值进行比较:
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