2017-02-22 575 views
0

意思是,我創建了以下數據框:大熊貓計算每月

availability = pd.DataFrame(propertyAvailableData).set_index("createdat") 

monthly_availability = availability.fillna(value=0).groupby(pd.TimeGrouper(freq='M')) 

這讓下面的輸出

  2015-08-18 2015-09-09 2015-09-10 2015-09-11 2015-09-12 \ 
createdat                 
2015-08-12   1.0   1.0   1.0   1.0   1.0 
2015-08-17   0.0   0.0   0.0   0.0   0.0 
2015-08-18   0.0   1.0   1.0   1.0   1.0 
2015-08-18   0.0   0.0   0.0   0.0   0.0 
2015-08-19   0.0   1.0   1.0   1.0   1.0 
2015-09-03   0.0   1.0   1.0   1.0   1.0 
2015-09-03   0.0   1.0   1.0   1.0   1.0 
2015-09-07   0.0   0.0   0.0   0.0   0.0 
2015-09-08   0.0   0.0   0.0   0.0   0.0 
2015-09-11   0.0   0.0   0.0   0.0   0.0 

我試圖做得到平均每一個月在創建:

monthly_availability_mean = monthly_availability.mean() 

但是,在這裏我得到以下輸出:

  2015-08-18 2015-09-09 2015-09-10 2015-09-11 2015-09-12 \ 
createdat                 
2015-08-31 0.111111 0.444444 0.666667 0.777778 0.777778 
2015-09-30 0.000000 0.222222 0.222222 0.222222 0.222222 
2015-10-31 0.000000 0.000000 0.000000 0.000000 0.000000 

當我用手檢查八月,我得到:

1.0 + 0 + 0 + 0 + 0/5 = 0.2 

如何獲得每月平均正確?

+1

嗯,對我來說它很好。也許索引不排序,並有另一行 - 嘗試'df = df.sort_index()' – jezrael

+0

謝謝!我嘗試過: 'availability = pd.DataFrame(propertyAvailableData).set_index(「createdat」)' 'availability = availability.sort_index()' 'monthly_availability = availability.fillna(value = 0).groupby(pd.TimeGrouper (freq ='M'))' 但仍然得到相同的結果 – Bunker

+1

我認爲你需要'sort_index'來更好地檢查數據,因爲它似乎還有另外一個帶有8月索引的行。或者你的短樣本也存在問題? – jezrael

回答

0
availability.resample('M').mean() 
+0

請添加一些解釋。 – Rahul