【问题标题】:Count number of rows when row contains certain text当行包含某些文本时计算行数
【发布时间】:2015-10-13 12:14:38
【问题描述】:

可能是一个简单的问题,但我找不到简单的答案。让我们以数据框 df1 中的以下列状态为例:

**Status**
Planned
Unplanned
Missing
Corrected

我想计算单元格包含“已计划”和“缺失”时的行数。我尝试了以下方法:

test1 = df1['Status'].str.contains('Planned|Missing').value_counts()

状态列来自类型:对象。我的代码行有什么问题?

【问题讨论】:

    标签: python pandas string


    【解决方案1】:

    试试下面的一个:

    df["Status"].value_counts()[['Planned','Missing']].sum()
    

    【讨论】:

    • 拜托,包含一些解释源代码的上下文总是有益的
    【解决方案2】:

    pd.Series.str.containsna=False 结合使用可确保您拥有一个布尔系列。还要注意 True / False1 / 0 一样进行数值计算。您现在可以直接使用pd.Series.sum

    count = df['Status'].str.contains('Planned|Missing', na=False).sum()
    

    这避免了不必要且昂贵的数据帧索引操作。

    【讨论】:

      【解决方案3】:

      您可以使用布尔条件过滤 df,然后调用 len:

      In [155]:
      len(df[df['Status'].str.contains('Planned|Missing')])
      
      Out[155]:
      2
      

      或使用您的value_counts 中的索引True

      In [158]:   
      df['Status'].str.contains('Planned|Missing').value_counts()[True]
      
      Out[158]:
      2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-24
        • 2011-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-01
        • 1970-01-01
        相关资源
        最近更新 更多