Как в python вывести значения списка по условию через pandas или numpy
Пусть есть список res = [0, 2, 4, 6, 2, 6, 3, 6, 8, 1]
По условию нужно вывести те элементы списка которые удовлетворяют условию: должно быть < 3
Нужен именно метод из pandas или numpy
Знаю только np.array(res) < 3 , но в таком случае он выведет не элементы, а только булевы значения True\False, а нужно именно сами значения
Ответы (3 шт):
Ну, простейший вариант (без нумпи) такой:
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)
Дальше просто нужно применить этот булев массив в качестве индексатора к массиву данных. И в 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, потому что иначе ещё индексы элементов напечатаются, будет не так наглядно выглядеть.
Однострочник на 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]