Удалить значения выше порога - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь удалить значения из фрейма данных, то есть температуры, некоторые значения равны 10,0, 10,5, 40,0, но у меня есть значения, которые не имеют смысла, такие как 140,0, 159,5 ... которые я хочу удалить. Я использую следующие функции, но не могу удалить ничего, например индексы

def remove_outlier(df, col_name):
    threshold = 100.0  # Anything that occurs abovethan this will be removed.
    value_counts = df.stack().value_counts()  # Entire DataFrame
    to_remove = value_counts[value_counts >= threshold].index
    if(len(to_remove) > 0):
        df[col_name].replace(to_remove, np.nan)
    return df

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Расширение Ответ GRS

>>> import pandas as pd

>>> d

  City  Temperature
0    A         10.0
1    B         10.5
2    C        140.0
3    D         30.0
4    E        145.0
5    F         99.0


>>> def remove_outlier(dataFrame, col_name='Temperature', threshold=100):
...     return dataFrame[dataFrame[col_name] < threshold]

>>> remove_outlier(d)

  City  Temperature
0    A         10.0
1    B         10.5
3    D         30.0
5    F         99.0
0 голосов
/ 29 октября 2018

Вы также можете использовать query функцию pandas:

df = df.query('col_name < threshold')
0 голосов
/ 29 октября 2018

Попробуйте

df = df[df[col_name] < threshold]

Или

df = df[~ df[col_name] > threshold]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...