Мне нужно найти все строки, в которых значения coulmn two
находятся между 1.5
и 3.5
. Результат, который я ожидаю, это строка с индексами 1 и 2. Я пробовал следующий код, но получаю сообщение об ошибке.pandas как выполнить сравнение по столбцу
>>> d = {'one' : [1., 2., 3., 4.],
... 'two' : [4., 3., 2., 1.],
... 'three':['a','b','c','d']}
>>> d
{'three': ['a', 'b', 'c', 'd'], 'two': [4.0, 3.0, 2.0, 1.0], 'one': [1.0, 2.0, 3.0, 4.0]}
>>> DataFrame(d)
one three two
0 1 a 4
1 2 b 3
2 3 c 2
3 4 d 1
>>> df = DataFrame(d)
>>> df[1.5 <= df['two'] <= 3.5]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>>
Спасибо. Работала по желанию. – learner
. Каждая операция сравнения объекта серии создает новую булевскую серию и единственный способ выполнить операцию 'и' или 'или' между Серией использует' & 'и' | ' бинарных операторов. После этого вы можете сделать обычное булевское индексирование. –