Python Pandas подсчет и суммирование конкретных условий
Существуют ли в pandas отдельные функции для выполнения эквивалентов SUMIF, которые суммируются по определенному условию и COUNTIF, который подсчитывает значения конкретных условий из Excel?
Я знаю, что существует много многоступенчатых функций, которые можно использовать для
например, для sumif
Я могу использовать (df.map(lambda x: condition), or df.size())
, затем использовать .sum()
а для countif
я могу использовать (groupby functions
и искать свой ответ или использовать фильтр и .count())
Есть ли простой одноэтапный процесс для выполнения этих функций, когда вы вводите условие и кадр данных, и получаете суммы или подсчитанные результаты?
Ответы
Ответ 1
Вы можете сначала сделать условный выбор и суммировать результаты выбора с помощью функции sum
.
>> df = pd.DataFrame({'a': [1, 2, 3]})
>> df[df.a > 1].sum()
a 5
dtype: int64
Имея более одного условия:
>> df[(df.a > 1) & (df.a < 3)].sum()
a 2
dtype: int64
Ответ 2
Вы не упомянули о фантастических способностях индексирования для данных, например:
>>> df = pd.DataFrame({"class":[1,1,1,2,2], "value":[1,2,3,4,5]})
>>> df[df["class"]==1].sum()
class 3
value 6
dtype: int64
>>> df[df["class"]==1].sum()["value"]
6
>>> df[df["class"]==1].count()["value"]
3
Вы можете заменить df["class"]==1
на другое условие.