Pandas любой альтернативный способ проверки между

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

У меня есть 3 столбца во фрейме данных pandas, и я хочу проверить, что каждое значение индекса находится между двумя другими столбцами. мой код

 def check_between():
    data = {'Upper': [22, 23, 24, 25, 26, 35, 36, 37, 38, 39, 40],
            'Value': [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
            'Lower': [19, 18, 21, 13, 14, 15, 30, 17, 18, 19, 20], }
    pds = panda.DataFrame().from_dict(data)
    print(pds)
    is_between = False
    for ind in pds.index:
        if pds['Upper'][ind] > pds['Value'][ind] > pds['Lower'][ind]:
            is_between = True
        else:
            is_between = False
            return is_between
    return is_between
 

Это правильный и оптимизированный способ или существует какая-либо другая предопределенная функция?

Комментарии:

1. Да, это pds['Value'].between(pds['Lower'], pds['Upper'], inclusive=False)

2. @QuangHoang — Можете ли вы опубликовать это в качестве ответа?

3. @QuangHoang спасибо, только одна путаница, это вернет серию, так как разбить и вернуть false

Ответ №1:

Да, Pandas имеет встроенную функцию для проверки между:

  betweens = pds['Value'].between(pds['Lower'], pds['Upper'], inclusive=False) 
 

И эквивалентность вашей check_between() функции:

  betweens.all()