在python中是否仍然可以访问groupby值
我在一个项目中工作,我能够使用GroupBy7d,现在我想访问groupedby元素 代码如下:在python中是否仍然可以访问groupby值,python,pandas,Python,Pandas,我在一个项目中工作,我能够使用GroupBy7d,现在我想访问groupedby元素 代码如下: group = df.set_index('date').groupby('user').resample('7D', convention='start', label='left') group_result = pd.DataFrame({'Weekly_in_averge_amount': group.mean()['value'], 'Weekly_in_max_amount':
group = df.set_index('date').groupby('user').resample('7D', convention='start', label='left')
group_result = pd.DataFrame({'Weekly_in_averge_amount': group.mean()['value'], 'Weekly_in_max_amount': group.max()['value']'Weekly_in_min_amount': group.min()['value'], 'Weekly_in_totalamount': group.sum()['value'], 'Weekly_in_degree': group.sum()['inputs'], 'monthdays': group.count()['month']})`
groupUser = group_result.groupby('user').first()
我得到了这个输出
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
例如,用户29有一周的事务,是否可以在用户29中显示分组的值
user date Weekly_in_averge_amount count
29 2011-05-25 1.512015 ... 34
29 2011-06-01 1.123298 ... 23
如我们所见,用户29已按一周对所有行进行分组。如何将行按一周分组
请注意,有34行按第一组分组
对不起,我的解释不清楚
谢谢你的帮助
问候,
Khaled您可以使用列名称字典和聚合函数,然后将多索引
转换为列,展平并最后重命名:
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
您正在尝试提取每一行吗?还是该行中的项目?请具体说明。我正在尝试提取该行中的项目。谢谢您的帮助,但我运行了上述代码,它没有按预期工作。但是,让我们以下面的例子为例,`用户日期每周平均金额计数29 2011-05-25 1.512015。。。34 29个用户有一个分组的34个事务。如何获取该用户的所有事务
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