我有一组按日期索引的数据。是否有一种简单的方法可以从此数据集中获取年度总计和每月平均值?
a b c d e
Statement Date
2003-12-29 655.0 54.51 0.083221 0.0 4.70
2004-01-28 978.0 82.69 0.084550 0.0 4.70
2004-02-25 905.0 78.58 0.086829 0.0 4.70
2004-03-29 1099.0 95.90 0.087261 0.0 4.70
2004-04-28 1070.0 93.88 0.087738 0.0 4.70
2004-05-26 656.0 57.99 0.088399 0.0 4.70
2004-06-28 527.0 43.92 0.083340 0.0 4.70
2004-07-28 399.0 32.79 0.082180 0.0 4.70
2004-08-27 359.0 30.53 0.085042 0.0 4.70
2004-09-28 381.0 34.76 0.091234 0.0 4.70
2004-10-26 471.0 45.25 0.096072 0.0 4.70
2004-11-24 967.0 85.99 0.088925 0.0 4.70
2004-12-28 1175.0 101.49 0.086374 0.0 4.70
2005-01-27 849.0 80.78 0.095147 0.0 4.70
2005-02-24 641.0 61.24 0.095538 0.0 4.70
2005-03-29 821.0 77.10 0.093910 0.0 4.70
2005-04-27 647.0 64.49 0.099675 0.0 4.70
2005-05-26 514.0 49.54 0.096381 0.0 4.70
2005-06-28 411.0 39.78 0.096788 0.0 4.70
2005-07-27 411.0 39.70 0.096594 0.0 4.70
2005-08-29 834.0 83.20 0.099760 0.0 4.70
2005-09-28 589.0 59.67 0.101307 0.0 4.70
2005-10-26 476.0 52.29 0.109853 0.0 4.70
2005-11-28 703.0 77.26 0.109900 0.0 4.70
2005-12-28 758.0 90.35 0.119195 0.0 4.70
2006-01-27 668.0 71.12 0.106467 99.0 10.54
2006-02-24 830.0 88.17 0.106229 13.0 4.70
2006-03-29 859.0 92.09 0.107206 0.0 4.70
2006-04-26 557.0 59.41 0.106661 2.0 4.70
2006-05-26 732.0 76.88 0.105027 27.0 4.70
我想创建a列的年度总数以及平均每月使用量(即,2004年,2005年和2006年1月的a列平均值)。我试图使用熊猫石斑鱼,但无法正常工作。如果可能的话,最好将新值输出到新的数据框。任何帮助表示赞赏。
请让我知道是否有任何不清楚的地方
答案 0 :(得分:0)
我认为需要对CategoricalIndex
或DatetimeIndex.month_name
以及聚合mean
的输出进行正确排序,以对DatetimeIndex.strftime
进行排序:
cats = ['January','February','March','April','May','June','July','August',
'September','October','November','December']
idx = pd.CategoricalIndex(df.index.month_name(), categories=cats, ordered=True)
#alternative solution
#idx = pd.CategoricalIndex(df.index.strftime('%B'), categories=cats, ordered=True)
df1 = df.groupby(idx).mean()
print (df1)
a b c d e
Statement Date
January 831.666667 78.196667 0.095388 33.000000 6.646667
February 792.000000 75.996667 0.096199 4.333333 4.700000
March 926.333333 88.363333 0.096126 0.000000 4.700000
April 758.000000 72.593333 0.098025 0.666667 4.700000
May 634.000000 61.470000 0.096602 9.000000 4.700000
June 469.000000 41.850000 0.090064 0.000000 4.700000
July 405.000000 36.245000 0.089387 0.000000 4.700000
August 596.500000 56.865000 0.092401 0.000000 4.700000
September 485.000000 47.215000 0.096271 0.000000 4.700000
October 473.500000 48.770000 0.102962 0.000000 4.700000
November 835.000000 81.625000 0.099413 0.000000 4.700000
December 862.666667 82.116667 0.096263 0.000000 4.700000
和DatetimeIndex.year
用于汇总sum
:
df2 = df.groupby(df.index.year).sum()
print (df2)
a b c d e
Statement Date
2003 655.0 54.51 0.083221 0.0 4.70
2004 8987.0 783.77 1.047944 0.0 56.40
2005 7654.0 775.40 1.214048 0.0 56.40
2006 3646.0 387.67 0.531590 141.0 29.34