Pandas Dataframe и применять - не могу понять, почему результирующие значения являются отрицательными - PullRequest
0 голосов
/ 22 декабря 2018

Вот картинка с моими данными, интересующий столбец RUL находится справа, имена были обрезаны (я использую набор данных деградации Turbo Engine от NASA), можно найти здесь: https://data.nasa.gov/widgets/vrks-gjie

Я делаю это в Azure ML Studio, но ниже приведен фрагмент кода, у меня есть 2 вспомогательные функции get_engine_last_cycle (которые, когда я выполняю модульное тестирование, похоже, работают должным образом - вычисляют последний цикл для этого механизма, например, двигатель 2 имеет максимумцикл в этом наборе данных 287, когда он терпит неудачу).Последняя вспомогательная функция, которую я вызываю get_engine_remainig_life, принимает двигатель и цикл в качестве аргументов и возвращает максимальный цикл - текущий цикл для этого двигателя (снова я проверил это на модульном уровне, и, похоже, он дает ожидаемые результаты).

По какой-то причине это не работает, когда я запускаю свой ноутбук.Столбец, который я называю «RUL», должен возвращать последовательность убывающих положительных целых чисел, например, 287, 286, 285, 284 и т. Д. Для механизма № 2.Тем не менее, это дает мне отрицательные значения.Я не могу понять, почему, но знаю, что проблема, вероятно, с этим одним куском кода

 df['RUL'] = df[['engine', 'cycle']].apply(lambda x: get_engine_remaining_life(*x), axis=1)

enter image description here

    def get_engine_last_cycle(engine):
        return int(df.loc[engine, ['cycle']].max())


    def get_engine_remaining_life(engine, cycle):
        return get_engine_last_cycle(engine) - int(cycle)

    df['RUL'] = df[['engine', 'cycle']].apply(lambda x: get_engine_remaining_life(*x), axis=1)

    return df

1 Ответ

0 голосов
/ 22 декабря 2018

Просто ради попыток, вот как я это реализовал.Может быть, это поможет вам.

df['RUL'] = df.loc[:, ['engine', 'cycle']].groupby('engine').transform('max')
df['RUL'] = df['RUL'] - df['cycle']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...