pandas中是否有单个函数执行SUMIF的等价函数,它对特定条件求和,COUNTIF从Excel中计算特定条件的值?
我知道有许多可用于
的多步功能例如sumif
我可以使用(df.map(lambda x: condition), or df.size())
然后使用.sum()
和countif
我可以使用(groupby functions
查找我的答案或使用过滤器和.count())
在您输入条件和数据框并获得总和或计算结果时,是否有简单的一步过程来执行这些功能?
答案 0 :(得分:61)
您可以先进行条件选择,然后使用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
答案 1 :(得分:27)
您没有提到数据帧的精确索引功能,例如:
>>> 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
。
答案 2 :(得分:1)
我通常在逻辑条件列上使用numpy sum:
>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame({'Age' : [20,24,18,5,78]})
>>> np.sum(df['Age'] > 20)
2
在我看来,这比上述解决方案要短