【问题标题】:How to access python groupby objects values如何访问python groupby对象值
【发布时间】:2017-12-02 14:37:17
【问题描述】:

我使用 groupby() 函数对 pandas 数据框进行多列分组。

df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['count'])

现在我想访问这个计数值(我想将所有计数值乘以 10) 我该怎么做?

【问题讨论】:

  • 这不是 groupby 对象。您已经完成了一些聚合,因此它应该返回一个 DataFrame。您可以在该 DataFrame 上执行常规操作 (df_tr_mod * 10) 吗?
  • 你能提供我的数据框吗

标签: python pandas data-science pandas-groupby


【解决方案1】:

在两个字段'Col1', 'Col2' 上应用groupby 和agg 函数进行计数,这里同时添加新的'count' 字段计数值乘以10。

df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['count'])*10

【讨论】:

    【解决方案2】:

    我认为你需要GroupBy.size,agg如果通过多个函数聚合更好:

    What is the difference between size and count in pandas?

    df_tr = pd.DataFrame({'Col1':[1,2,1,2,2],
                          'Col2':[5,5,5,6,6],
                          'aCol':[1,8,9,6,4]})
    print(df_tr)
       Col1  Col2  aCol
    0     1     5     1
    1     2     5     8
    2     1     5     9
    3     2     6     6
    4     2     6     4
    

    #your solution, only multiple 10 
    df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['count']) * 10
    print (df_tr_mod)
               count
    Col1 Col2       
    1    5        20
    2    5        10
         6        20
    
    print (type(df_tr_mod))
    <class 'pandas.core.frame.DataFrame'>
    

    #for MultiIndex add to_frame
    df_tr_mod = df_tr.groupby(['Col1','Col2']).size().to_frame(name='count') * 10
    print (df_tr_mod)
               count
    Col1 Col2       
    1    5        20
    2    5        10
         6        20
    
    #for all columns from index add reset_index() 
    df_tr_mod = df_tr.groupby(['Col1','Col2']).size().reset_index(name='count') 
    df_tr_mod["count"]= df_tr_mod["count"]*10
    print (df_tr_mod)
       Col1  Col2  count
    0     1     5     20
    1     2     5     10
    2     2     6     20
    

    更好地使用agg函数:

    df_tr_mod = df_tr.groupby(['Col1','Col2']).aCol.agg(['size', 'sum', 'mean'])
    print (df_tr_mod)
               size  sum  mean
    Col1 Col2                 
    1    5        2   10     5
    2    5        1    8     8
         6        2   10     5
    

    【讨论】:

      猜你喜欢
      • 2012-06-06
      • 2020-10-17
      • 2021-12-28
      • 2021-10-23
      • 1970-01-01
      • 2012-06-09
      • 2021-07-27
      • 2022-01-28
      • 2020-07-08
      相关资源
      最近更新 更多