Случай, когда, иначе, получить значение из существующего столбца в dataframe - PullRequest
0 голосов
/ 16 мая 2019

У меня есть датафрейм с такой структурой:

df

Я хочу:
IF Year >= 2010 then 2010 ELSE Year (принять оригинальное значение, когда под 2010).

С этим кодом он работает для значений от 2010 года и выше, но он вставляет только 2003 (первая строка) из исходных значений.

def case_when(row):
    if (row['Year'] >= 2010) : return 2010 
    else:
        return df_year['Year']

df_year['Year'] = df_year.apply(case_when, axis=1)

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Вы не должны использовать apply, когда векторизованный путь возможен с np.where от numpy:

import numpy as np
...
df_year['Year'] = np.where(df_year['Year'] >= 2010, 2010, df_year['Year'])
0 голосов
/ 16 мая 2019

Это может работать:

df['Year'] = [min(x, 2010) for x in df['Year']]

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