【问题标题】:How can i delete rows of a dataframe if the values of a specifing column are not strictly increasing?如果指定列的值没有严格增加,我如何删除数据框的行?
【发布时间】:2018-10-17 12:32:50
【问题描述】:

好的,我认为这应该很简单,在列表理解中使用 if 语句。反正我不知道怎么处理。

正如您在下面看到的那样,我想遍历行并删除这些行,其中 column "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

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

使用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

【讨论】:

  • @Joe - 经过测试,它还删除了第一个值。如果需要,添加解决方案。
  • @Joe - 谢谢。
【解决方案2】:
l = [x for x in df.index if x > 0 and df[x]['column1'] > df[x - 1]['column1']]

l 中,您存储所需的所有行索引,然后继续使用loc 运算符。

df2 = df.loc[l]

【讨论】:

    猜你喜欢
    • 2022-11-12
    • 1970-01-01
    • 2017-01-01
    • 2017-12-10
    • 2018-01-13
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多