У меня есть пандасный фрейм данных, и он содержит несколько повторяющихся строк, поэтому я хочу удалить их, но с условием:
wave num stlines fwhm EWs MeasredWave rv
0 4050.32 3 0.28269 0.07365 22.16080 4050.311360 0.639507
1 4208.98 5 0.48122 0.08765 44.90035 4208.972962 0.501295
2 4208.98 6 0.49994 0.08220 43.74591 4208.974061 0.423016
3 4512.99 2 0.19428 0.09145 18.91216 4512.981301 0.577864
4 4512.99 2 0.21029 0.08860 19.83386 4512.981389 0.572018
5 4520.22 7 0.65300 0.11791 81.95775 4520.214169 0.386727
6 4520.22 4 0.66772 0.11591 82.38548 4520.212833 0.475334
7 4523.08 6 0.13789 0.11303 16.59034 4523.060226 1.310633
8 4523.40 1 0.41672 0.09892 43.87775 4523.390305 0.642545
9 5797.87 3 0.27062 0.15473 44.57125 5797.850820 0.991747
10 5797.87 4 0.28240 0.14991 45.06534 5797.848945 1.088698
dir1 = os.listdir('/home/Desktop/computed_2d/')
for filename in dir1:
if filename.endswith('.ares'):
df1 = pd.read_table(path1+filename, skiprows=0, usecols=(0,1,2,3,4,8,10),names=['wave','num','stlines','fwhm','EWs','MeasredWave','rv'],delimiter=r'\s+')
#dup_rows gives the duplicate rows on the basis of column 'wave'
dup_rows = df1[df1.duplicated(['wave'], keep=False)]
computed_rv = 0.50641
Теперь я хочу отбросить дубликат.строка, значение которой для df1.rv
почти равно значению computed_rv
.
Например: из строки 1 и 2 я хочу сохранить строку 1, поскольку значение df1.rv
почти равнодо compted_rv
.
значения могут быть ниже или выше, чем computed_rv
, например (0,34 и 0,30) или (0,99 и 1,8), тогда я хочу сохранить строки, значение которых для df1.rv
близко к'computed_rv'
, как здесь, я хотел бы оставить те с 0,34 и 0,99
Как я могу это сделать ??