У меня большой файл данных, и меня интересуют только строки с конкретными значениями x 4.125
, как показано ниже. Теперь, поскольку значение 4.125
относится к позиции остановки иона, соответствующая начальная позиция также представляет интерес для меня, и я хочу сохранить эту информацию в массиве.
Как мне написать программу, которая эффективно находит позицию остановки x в 4.125
и сохраняет позицию запуска иона?
Это массив 120982 * 9
, и в приведенном ниже примере мне было бы интересно сохранить информацию об ионе # 3849096
.
"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
Это код, который я разработал до сих пор, но не работает:
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) < 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()
Файл ion.csv должен выглядеть следующим образом:
"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