无论如何,是否可以在python中访问值groupby

时间:2019-12-21 15:08:06

标签: python pandas

我正在做一个项目,我能够对7D进行分组,现在我想访问分组的元素 这是代码:

29                   1.512015  ...                1.049153
30                  34.896646  ...               26.350528
37                   0.055000  ...                0.002245
38                   0.835067  ...                0.102253
39                  38.044883  ...                9.317114
40                   1.476168  ...                0.090378
41                   1.000000  ...                0.061224
42                   8.976852  ...                0.183201
43                   0.012000  ...                0.000490
44                   2.377267  ...                0.048516
45                   1.365204  ...              284.463992

我得到了这个输出

    user   date                 Weekly_in_averge_amount   count
    29   2011-05-25                 1.512015  ...         34
    29   2011-06-01                 1.123298  ...         23

例如,用户29的交易时间为一周,是否可以在用户29中显示分组的值

myFunction = () =>{
     MyCustomConfirm(' Do you want to clear all ? ', function () {
                searchInput.val("");
                $(this).val("");
            });
     return false;
}


render(){
    // your parent element of form
    <form onBlur={this.myFunction()>

    </form>
}

我们可以看到,用户29已将所有行按一周分组。如何获得按一周分组的行。

请注意,第一组分组了34行

抱歉,如果我的解释不清楚 谢谢您的帮助

此致

Khaled

1 个答案:

答案 0 :(得分:0)

您可以将GroupBy.agg与列名字典和聚合函数一起使用,然后将MultiIndex转换为列,展平并最后rename

np.random.seed(123)

rng = pd.date_range('2017-04-03', periods=10)
df = pd.DataFrame({'date': rng, 
                   'value': range(10), 
                   'inputs': range(3,13), 
                   'month': np.random.randint(1,7, size=10), 
                   'user':['a'] * 3 + ['b'] *3 + ['c'] *4})  
print (df)
        date  value  inputs  month user
0 2017-04-03      0       3      6    a
1 2017-04-04      1       4      3    a
2 2017-04-05      2       5      5    a
3 2017-04-06      3       6      3    b
4 2017-04-07      4       7      2    b
5 2017-04-08      5       8      4    b
6 2017-04-09      6       9      3    c
7 2017-04-10      7      10      4    c
8 2017-04-11      8      11      2    c
9 2017-04-12      9      12      2    c

df1  = (df.set_index('date')
          .groupby('user')
          .resample('7D', convention='start', label='left')
          .agg({'value': ['mean','max','min','sum'],
                'inputs':'sum',
                'month':'count'}))
df1.columns = df1.columns.map('_'.join)

d = {'value_max':'Weekly_in_max_amount',
     'value_min':'Weekly_in_min_amount',
     'value_sum':'Weekly_in_totalamount',
     'inputs_sum':'Weekly_in_degree',
     'month_count':'monthdays',
     'value_mean':'Weekly_in_averge_amount'}

df1 = df1.rename(columns=d).reset_index()

print (df1)
  user       date  Weekly_in_averge_amount  Weekly_in_max_amount  \
0    a 2017-04-03                      1.0                     2   
1    b 2017-04-06                      4.0                     5   
2    c 2017-04-09                      7.5                     9   

   Weekly_in_min_amount  Weekly_in_totalamount  Weekly_in_degree  monthdays  
0                     0                      3                12          3  
1                     3                     12                21          3  
2                     6                     30                42          4