title: Data filtering from large CSV
body: <p>I have a large data file and I'm only interested in rows with specific x values of <code>4.125</code> as shown below. Now because the value of <code>4.125</code> relates to the stop position of the ion, the corresponding start position is also of interest to me and I want to keep this information in the array. </p>
  
  <p>How do I write a program which effectively finds the x stop position of <code>4.125</code> and retains the ion start position? </p>
  
  <p>It is a <code>120982 * 9</code> array and in the example shown below I would be interested in keeping the information of ion # <code>3849096</code>. </p>
  
  <pre class="lang-none prettyprint-override"><code>"Ion N","Mass","Charge","X","Y","Z","Azm","Elv","KE" 
  3849094,0.00054858,-1,66.5216,-51,-3.8,-180,88.7,18160
  3849094,0.00054858,-1,27.3925,30.3532,-4.07076,-177.1,41.5494,17697.2 
  3849095,0.00054858,-1,66.5216,-51,-3.7,-180,88.7,18160
  3849095,0.00054858,-1,26.6277,31.0039,-3.91402,-177.096,40.8293,17699.4
  3849096,0.00054858,-1,66.5216,-51,-3.6,-180,88.7,18160
  3849096,0.00054858,-1,4.125,44.9887,-2.47517,-176.363,25.715,17711.1
  </code></pre>
  
  <p>This is the code I have developed so far but does not work:</p>
  
  <pre><code>import pandas as pd 
  import numpy as np
  
  opts = pd.read_csv('Ambre_2.dat',sep = ',', low_memory = False)
  df = pd.DataFrame(opts)
  
  X = df.iloc[:,3]
  IonN = df.iloc[:,0]
  tol = 1e-6
  Fltr = 4.125
  
  filterreddata = df[abs(df['X'] - Fltr) &lt; tol]
  filteredions = df[np.in1d(df['Ion N'], filterreddata['Ion N'])]
  filteredions[2:2:end, :] = []
  f = open('ions.csv', 'w')
  f.write(tabulate(filteredions))
  f.close()
  </code></pre>
  
  <p>The ions.csv file should look like this:</p>
  
  <pre class="lang-none prettyprint-override"><code>"Ion N","Mass","Charge","X","Y","Z","Azm","Elv","KE" 
  348450  0.00054858  -1  50.2216 -41 0.9 0   88.1    9200
  348451  0.00054858  -1  50.3216 -41 0.9 0   88.1    9200 
  348511  0.00054858  -1  50.2216 -41 1   0   88.1    9200
  348512  0.00054858  -1  50.3216 -41 1   0   88.1    9200
  </code></pre>