#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()