Как в python вывести значения списка по условию через pandas или numpy

Рейтинг: 1Ответов: 3Опубликовано: 14.03.2023

Пусть есть список res = [0, 2, 4, 6, 2, 6, 3, 6, 8, 1] По условию нужно вывести те элементы списка которые удовлетворяют условию: должно быть < 3 Нужен именно метод из pandas или numpy

Знаю только np.array(res) < 3 , но в таком случае он выведет не элементы, а только булевы значения True\False, а нужно именно сами значения

Ответы

▲ 2

Дальше просто нужно применить этот булев массив в качестве индексатора к массиву данных. И в Numpy и в Pandas будет практически одинаково:

import numpy as np
import pandas as pd

res = [0, 2, 4, 6, 2, 6, 3, 6, 8, 1]
arr = np.array(res)
print(arr[arr < 3])
ser = pd.Series(res)
print(ser[ser < 3].values)

Вывод:

[0 2 2 1]
[0 2 2 1]

От Pandas.Series я ещё взял .values, потому что иначе ещё индексы элементов напечатаются, будет не так наглядно выглядеть.

▲ 1

Ну, простейший вариант (без нумпи) такой:

res = [0, 2, 4, 6, 2, 6, 3, 6, 8, 1]
result = [st for st in res if st>3]
print(result)

С использованием нумпи это выглядит несколько сложнее, но и возможностей больше:

import numpy as np
 
values = np.array([0, 2, 4, 6, 2, 6, 3, 6, 8, 1])
conditions = values > 3
print(conditions)
result =  values[conditions]
print(result)
▲ 0

Однострочник на pandas. Делаем серию, фильтруем (отбираем) через loc[] с лямбдой. В лямбде lt(3) означает less then (меньше чем) 3. Потом переводим в список и печатаем.

print(pd.Series([0, 2, 4, 6, 2, 6, 3, 6, 8, 1]).loc[lambda x: x.lt(3)].tolist())
[0, 2, 2, 1]