более питонический способ - манипулирование данными с пандами - PullRequest
0 голосов
/ 08 октября 2018

Скажем, у меня есть фрейм данных с именем vals следующим образом:

id .......... дата .......... min_date .......... max_date

1 .......... 2016/01 /01 .......... 2017/01/01 .......... 2018/07/01 2 .......... 2017/02/02 .......... 2017/01/01 .......... 2017/04/01 3 .......... 2016/05/01 .......... 2016/01/01 .......... 2016/07/01

Я хочу добавить столбец с именем within_range, который показывает True, если между datemin_date и max_date и False в противном случае.

Это код, который у меня есть, но мне интересно, есть ли более эффективный способ:

vals['within_range'] = False

for i in range(len(vals)):
    if vals.loc[i, 'date'] >= vals.loc[i, 'min_date']
          and vals.loc[i, 'date'] <= vals.loc[i, 'max_date']:

        vals.loc[i, 'within_range'] = True

Ответы [ 2 ]

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

Вы можете использовать pd.Series.between:

vals['within_range'] = vals['date'].between(vals['min_date'], vals['max_date'])
0 голосов
/ 08 октября 2018

Не будет ли это просто:

vals['within_range'] = (
    vals['date'] >= vals['min_date'] &
    vals['date'] <= vals['max_date']
)
...