Если больше, чем разделить на значение elif pass - PullRequest
0 голосов
/ 03 мая 2018

Я хочу изменить все значения столбца FuelFlow в df_OmanAirTO, которые больше 5800. Значения больше 5800 должны быть разделены на 2,2046226218. Другие значения, которые меньше 5800, должны остаться теми же.

Я новичок в Python и попробовал следующее:

for row in df_OmanAirTO.FuelFlow:
    if row>=5800:
        df_OmanAirTO.FuelFlow/2.2046226218
    elif row<=5800:
        pass
    print(df_OmanAirTO.FuelFlow)

Я не получаю сообщение об ошибке, но мои значения в столбце FuelFlow также не изменились. Каким будет правильный сценарий?

Спасибо, что помогли мне заранее!

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Я думаю, что это решит вашу проблему: я определил отдельный метод для проверки состояния и выполнения операции.

# Method to check condition
def div(value):
    if value >= 5800:
        value /= 2.2046226218
    return value

# To perform operation row wise in an efficient way.
df_OmanAirTO.FuelFlow = df_OmanAirTO.loc[:,'FuelFlow'].apply(lambda row: div(row))

В случае, если у вас есть какие-либо сомнения, вы можете спросить.

0 голосов
/ 03 мая 2018

Когда вы пишете:

df_OmanAirTO.FuelFlow / 2.2046226218

Вы просто вычисляете деление и выбрасываете результат.

Чтобы обновить столбец, вам нужно написать:

for row in df_OmanAirTO.FuelFlow:
    if row>=5800:
        df_OmanAirTO.FuelFlow = df_OmanAirTO.FuelFlow / 2.2046226218
        # or, using shorthand as suggested by Jean-François Fabre
        # df_OmanAirTO.FuelFlow /= 2.2046226218
    print(df_OmanAirTO.FuelFlow)
...