1 回答
TA贡献1831条经验 获得超9个赞
我认为您需要agg使用函数进行聚合first,sum并且mean:
因为 columnDaily.Return是由列表中定义的多个函数聚合的,所以MultiIndex在输出中获取。因此有必要将其展平 - 最简单的是map与join.
df = df.groupby('Dates').agg({'Last.Price':'first', 'Daily.Return':['mean','sum']})
print (df)
Last.Price Daily.Return
first mean sum
Dates
2018-11-23 75.18 -0.013844 -0.027689
2018-11-26 77.84 -0.013583 -0.027167
2018-11-27 79.50 0.010044 0.020087
2018-11-28 80.27 -0.009686 -0.009686
2018-11-29 80.00 0.003364 0.003364
print (df.columns)
MultiIndex(levels=[['Last.Price', 'Daily.Return'], ['first', 'mean', 'sum']],
labels=[[0, 1, 1], [0, 1, 2]])
df.columns = df.columns.map('_'.join)
print (df)
Last.Price_first Daily.Return_mean Daily.Return_sum
Dates
2018-11-23 75.18 -0.013844 -0.027689
2018-11-26 77.84 -0.013583 -0.027167
2018-11-27 79.50 0.010044 0.020087
2018-11-28 80.27 -0.009686 -0.009686
2018-11-29 80.00 0.003364 0.003364
最后一rename栏:
d = {'Last.Price_first':'Last.Price',
'Daily.Return_sum': 'Cum.Return',
'Daily.Return_mean': 'Average.Return'}
df = df.rename(columns=d)
print (df)
Last.Price Average.Return Cum.Return
Dates
2018-11-23 75.18 -0.013844 -0.027689
2018-11-26 77.84 -0.013583 -0.027167
2018-11-27 79.50 0.010044 0.020087
2018-11-28 80.27 -0.009686 -0.009686
2018-11-29 80.00 0.003364 0.003364
添加回答
举报