【问题标题】:Count rows across certain columns in a dataframe if they are greater than another value and groupby another column如果数据框中某些列的行数大于另一个值并按另一列分组,则计算它们的行数
【发布时间】:2021-07-26 03:13:01
【问题描述】:

我有一个数据框:

df = pd.DataFrame({ 
    'BU': ['Total', 'Total', 'Total', 'CRS', 'CRS', 'CRS'], 
    'Line_Item': ['Revenues','EBT', 'Expenses', 'Revenues', 'EBT', 'Expenses'],
    '1Q16': [100, 120, 0, 200, 190, 210],
    '2Q16': [100, 0, 130, 200, 190, 210],
    '3Q16': [200, 250, 0, 120, 0, 190]})

我希望通过“BU”计算 1Q16、2Q16、3Q16 中大于零的行数。要计算 1Q16、2Q16、3Q16 中的行数,我刚刚解释过,我可以使用:

cols = ['1Q16','2Q16','3Q16']
df[cols].gt(0).sum()

另外,我想按BU分组

【问题讨论】:

    标签: pandas group-by conditional-statements


    【解决方案1】:

    使用您展示的示例,请尝试以下操作。

    cols = ['1Q16','2Q16','3Q16']
    df[cols].gt(0).groupby(df['BU']).sum()
    

    输出如下:

          1Q16  2Q16    3Q16
    BU          
    CRS   3.0   3.0     2.0
    Total 2.0   2.0     2.0
    

    说明:以下是对上述内容的详细说明。

    • 创建cols 列表,其中包含我们要执行任务的列名。
    • 使用gt 函数获取大于0 的值。
    • 然后使用groupby 并传递df['BU'] 来获取与BU 列相关的groupby 值。
    • 然后应用sum函数得到大于0的值的总和。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-05
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      相关资源
      最近更新 更多