【发布时间】:2018-07-28 11:00:06
【问题描述】:
我有以下情况
date_range = pd.date_range('20180101', '20180105')
date_list = list(itertools.chain.from_iterable(itertools.repeat(date, 2) for date in date_range))
num_list = np.random.randint(1,100,size=(10))
date2 = ['2018-12-31']*10
df = pd.DataFrame({'date1':date_list,'numbers':num_list,'date2':date2})
显示此数据框给出
date1 date2 numbers
0 2018-01-01 2018-12-31 38
1 2018-01-01 2018-12-31 2
2 2018-01-02 2018-12-31 8
3 2018-01-02 2018-12-31 51
4 2018-01-03 2018-12-31 16
5 2018-01-03 2018-12-31 22
6 2018-01-04 2018-12-31 43
7 2018-01-04 2018-12-31 76
8 2018-01-05 2018-12-31 47
9 2018-01-05 2018-12-31 50
我想获得一个新的数据框,它是 a) 按 date1 分组的,b) 总结数字列中每个 date1 的值,c) 保留 date2 值(我们可以假设对于每个 date1,或者在这种情况下,整个数据帧都相同
我可以执行以下操作来实现 a+b,但如果我尝试在聚合字典中包含类似 'date2':'mean' 之类的内容,它将不起作用并返回 DataError: No numeric types to aggregate
df.groupby(['date1'],as_index=False).agg({'numbers':'sum'})
有什么建议吗?
【问题讨论】: