Python Pandas计算和总结特定条件

use*_*006 55 python sum pandas

是否有单个函数在pandas中执行SUMIF的等价物,它是特定条件的总和,COUNTIF是从Excel计算特定条件的值?

我知道可以使用许多多步功能

例如,sumif我可以使用(df.map(lambda x: condition), or df.size())然后使用.sum()

因为countif我可以使用(groupby functions和寻找我的答案或使用过滤器和.count())

在您输入条件和数据框并获得总和或计算结果时,是否有简单的一步过程来执行这些功能?

Jim*_*y C 69

您可以先进行条件选择,然后使用该sum函数汇总选择的结果.

>> df = pd.DataFrame({'a': [1, 2, 3]})
>> df[df.a > 1].sum()   
a    5
dtype: int64
Run Code Online (Sandbox Code Playgroud)

有多个条件:

>> df[(df.a > 1) & (df.a < 3)].sum()
a    2
dtype: int64
Run Code Online (Sandbox Code Playgroud)

  • 如果您有两个或更多不同的列并且您想要多个条件,您会怎么做? (3认同)
  • @JimmyC:你的答案提供了SUMIF的代码而不是COUNTIF的代码,对吧? (2认同)

Tho*_*anz 35

您没有提到数据帧的花哨索引功能,例如:

>>> 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
Run Code Online (Sandbox Code Playgroud)

您可以替换df["class"]==1另一个条件.

  • 获得计数的更简单方法是`len(df [df ["class"] == 1])` (4认同)

dan*_*345 10

我通常在逻辑条件列上使用 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
Run Code Online (Sandbox Code Playgroud)

在我看来,这比上面提出的解决方案略短