0
0 комментариев

Как удалить строки в Pandas DataFrame, в которых значения в столбце STP == 1005092?

Подробно:

Я занимаюсь обработкой данных в Jupyter notebook: нормальное распределение, спектрограммы, гистограммы и тп. У меня есть 1500 тысячи проиндексированных массивов внутри одного файла (Индекс »STP»). Есть 2 массива которые не подходят по показаниям (явно выделяются из остальных 1498 значений), но проходят тест на нормальное распределение, из-за чего не фильтруются программой. Я пробовал команды data.STP.remove(1005072)? где семизначное число — индекс массива, но все счетно.

Код:

cols = ['ttt','IK05','IK06','IK07','IK08','IK10','IK11','IK14','IK16','IK20','DA05','DA06','DA07','DA08','DA10','DA11','DA14','DA16', 'DA20',
'GZ1','GZ2','GZ3','GZ4', 'LLS', 'LLD', 'STP']
 
def lasread (fname):
    data = pd.read_table(fname, delim_whitespace = True,na_values = '-999.25', index_col=False)
    return data[cols]
 
data = None
 
for name in las:
    print(name)
    if data is None:
        data = lasread (name)
    else:
        data = pd.concat([data, lasread (name)])
 
ndata = data.STP.as_matrix(columns=None)
 
df = data[cols]
 
df1 = df.groupby('STP')
df1.head()
dfp  = pd.DataFrame()
 
 
for name, group in df1:
     k,p=stats.mstats.normaltest(group[5:-5])
     dfp[name] = p
 
d=dfp.transpose()
d.columns = cols
goodindex = d[d.IK20>0.05][d.DA20>0.05].index - отбраковка по СКО
**data.STP.remove(1005072)**
 
filtereddata = data[cols][data.STP == -39]
 
for f in goodindex:
     a = data[cols][data.STP == f]
     filtereddata = pd.concat([filtereddata, a])
print(filtereddata)


Добавить комментарий