Are there single functions in pandas to perform the equivalents of SUMIF, which sums over a specific condition and COUNTIF, which counts values of specific conditions from Excel?
I know that there are many multiple step functions that can be used for
for example for sumif
I can use (df.map(lambda x: condition), or df.size())
then use .sum()
and for countif
I can use (groupby functions
and look for my answer or use a filter and the .count())
Is there simple one step process to do these functions where you enter the condition and the data frame and you get the sum or counted results?
Pandas DataFrame count() Method The count() method counts the number of not empty values for each row, or column if you specify the axis parameter as axis='columns' , and returns a Series object with the result for each row (or column).
You can first make a conditional selection, and sum up the results of the selection using the sum
function.
>> df = pd.DataFrame({'a': [1, 2, 3]}) >> df[df.a > 1].sum() a 5 dtype: int64
Having more than one condition:
>> df[(df.a > 1) & (df.a < 3)].sum() a 2 dtype: int64
If you want to do COUNTIF
, just replace sum()
with count()
You didn't mention the fancy indexing capabilities of dataframes, e.g.:
>>> 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
You could replace df["class"]==1
by another condition.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With