2016-11-30 130 views
0

假設我有一個包含10行和16列的Python Pandas數據框。每行代表一種產品。第一列是產品ID。其他15列用於計算每個季度給定月份列的平均值

2010/01,2010/02,2010/03,2010/05,2010/06,2010/07,2010/08,2010/10,2010/11,2010售價/ 12,2011/01,2011/02,2011/03,2011/04,2011/05。

(列名字符串,不是日期格式)現在我想計算每季度的平均銷售價格(2010年一季度,2010年第一季度,...,2011年第二季度),我不知道如何處理用它。 (請注意,有缺失的一個月2010/04,2010/09和2011/06是)

上述說明僅僅是一個例子。因爲這個數據集非常小。可以手動循環。但是,我所處理的真實數據集是10730 * 202。因此我無法手動檢查哪個月實際上丟失了或手動映射宿舍。我想知道我可以在這裏應用的有效方式。

感謝您的幫助!

+0

您可以將字符串轉換爲日期時間並應用groupby查詢。我沒有嘗試過。它只是一個建議。 – user1211

回答

1

這應該有所幫助。

import pandas as pd 
import numpy as np 
rng = pd.DataFrame({'date': pd.date_range('1/1/2011', periods=72, freq='M'), 'value': np.arange(72)}) 
df = rng.groupby([rng.date.dt.quarter, rng.date.dt.year]) .mean() 
df.index.names = ['quarter', 'year'] 
df.columns = ['mean'] 
print df 


      mean 
quarter year  
1  2011  1 
     2012 13 
     2013 25 
     2014 37 
     2015 49 
     2016 61 
2  2011  4 
     2012 16 
     2013 28 
     2014 40 
     2015 52 
     2016 64 
3  2011  7 
     2012 19 
     2013 31 
     2014 43 
     2015 55 
     2016 67 
4  2011 10 
     2012 22 
     2013 34 
     2014 46 
     2015 58 
     2016 70