2017-02-22 347 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