【问题标题】:Delete row if remainder is not 0如果余数不为 0,则删除行
【发布时间】:2020-02-04 07:17:52
【问题描述】:

如果 ['D1'] 除以 0.02 后的余数不为 0,我正在寻找一个将删除整行的脚本。提前致谢!

输入:

D1     Value
0.01    2
0.02    1
0.03    4
0.04    3
0.05    6
0.06    5

期望的输出:

D1     Value
0.02    1
0.04    3
0.06    5

我测试过的代码:

for q in range(len(df)):
   if (df.loc[q, 'D1']) % 0.02 != 0:
      df.drop(q)

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    更改逻辑 - 如果与 boolean indexing 相等,则选择行:

    df = df[df['D1'] % 0.02 == 0]
    print (df)
         D1  Value
    1  0.02      1
    3  0.04      3
    

    使用 drop 是可能的,但过于复杂:

    df = df.drop(df.index[df['D1'] % 0.02 != 0])
    

    编辑由于某种原因0.06 % 0.02=0.019999999999999997(我认为是浮点精度),因此您可以通过100 进行多个值并通过2 进行比较:

    df = df[df['D1'].mul(100) % 2 == 0]
    print (df)
         D1  Value
    1  0.02      1
    3  0.04      3
    5  0.06      5
    

    【讨论】:

      猜你喜欢
      • 2016-01-02
      • 2016-02-05
      • 2014-04-13
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多