【问题标题】:How to count rows in a dataframe that satisfy multiple conditions?如何计算满足多个条件的数据框中的行?
【发布时间】:2021-06-24 17:51:07
【问题描述】:

我有一个看起来有点像这样的数据框(我们称之为 df)。

Offer | Country | Type | Cancelled
------|---------|------|----------
111   | UK      | A    | N
222   | UK      | A    | Y
333   | UK      | B    | N
444   | UK      | C    | N
555   | UK      | D    | N
666   | UK      | E    | N 
777   | ROI     | A    | N

 

我想获得一个变量来保存所有属于 A、B 或 C 类型且尚未取消的英国优惠的计数。因此,对于上面的数据,变量将设置为 3(即提供 111、333 和 444)。请问有人知道怎么做吗?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    试试:

    x = df.loc[
        df.Country.eq("UK") & df.Type.isin(["A", "B", "C"]) & df.Cancelled.eq("N")
    ]
    print(len(x))
    

    打印:

    3
    

    一步一步:

    1. 创建蒙版:
    mask = (
        df.Country.eq("UK") & df.Type.isin(["A", "B", "C"]) & 
    df.Cancelled.eq("N")
    )
    
    
    0     True
    1    False
    2     True
    3     True
    4    False
    5    False
    dtype: bool
    
    1. .locmask 一起使用:
    x = df.loc[mask]
    
    
       Offer Country Type Cancelled
    0    111      UK    A         N
    2    333      UK    B         N
    3    444      UK    C         N
    
    1. 使用len():
    print(len(x))
    

    或者:对掩码求和:

    print(mask.sum())
    

    打印:

    3
    

    【讨论】:

      【解决方案2】:

      一行:

      my_count =len(df[(df.Country=='UK') && (df.Type in ['A','B','C']) && (df.Cancelled=='N')])
      

      【讨论】:

        猜你喜欢
        • 2013-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-21
        • 1970-01-01
        • 1970-01-01
        • 2020-05-16
        相关资源
        最近更新 更多