1

I am looking for a script that will delete an entire row, if ['D1'] does not give a remainder of 0, when divided by 0.02. Thanks in advance!

Input:

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

Desired Output:

D1     Value
0.02    1
0.04    3
0.06    5

The code I have tested:

for q in range(len(df)):
   if (df.loc[q, 'D1']) % 0.02 != 0:
      df.drop(q)
Jaden-Dz99
  • 119
  • 8

1 Answers1

4

Change logic - select rows if equal by boolean indexing:

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

With drop it is possible, but overcomplicated:

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

EDIT For some reason 0.06 % 0.02=0.019999999999999997 (I think float precision), so you can multiple values by 100 and compare by 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
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252