好吧,我认为这应该很简单,只需在列表理解中使用if语句。无论如何,我不知道该如何处理。
正如您在下面看到的那样,我想遍历行并删除这些行,其中列“ 1”的当前值小于之前的值。
我想用增加的值制作一个新的数据框。 我不想对数据框进行排序。
print (df)
0 1
649 1.244399e-09 9.07
648 1.152221e-09 9.00
647 1.075406e-09 8.96
646 1.013954e-09 8.92
645 9.371397e-10 8.88
644 2.243742e-09 9.57
643 2.113292e-09 9.50
642 1.956752e-09 9.42
641 1.826302e-09 9.37
640 1.721942e-09 9.33
639 1.591492e-09 9.28
638 1.487131e-09 9.23
637 1.408861e-09 9.19
636 1.304501e-09 9.14
635 4.809608e-09 10.32
答案 0 :(得分:2)
将Series.diff
与boolean indexing
一起使用进行过滤:
#if need first and second value for increasing second value
#df1 = df[df[1].diff().bfill() > 0]
df1 = df[df[1].diff() > 0]
print (df1)
0 1
644 2.243742e-09 9.57
635 4.809608e-09 10.32
详细信息:
print (df[1].diff())
649 NaN
648 -0.07
647 -0.04
646 -0.04
645 -0.04
644 0.69
643 -0.07
642 -0.08
641 -0.05
640 -0.04
639 -0.05
638 -0.05
637 -0.04
636 -0.05
635 1.18
Name: 1, dtype: float64
答案 1 :(得分:1)
l = [x for x in df.index if x > 0 and df[x]['column1'] > df[x - 1]['column1']]
在l
中存储所需的所有行索引,然后继续使用loc
操作符。
df2 = df.loc[l]