2017-06-13 37 views
1

好吧,我有一個數據幀與我想分組的時間戳索引。它的形式如下:當有NaNs,你想使用groupby

      key1   key2  value 
2014-02-03 12:00:00  22    32   98.89 
2014-02-03 12:00:00  23    33   99.25 
2014-02-03 12:00:00  24    34   99.78 
2014-02-03 15:00:00  22    32   96.54 
2014-02-03 15:00:00  23    33   97.21 
2014-02-03 15:00:00  24    34   98.59 
2014-02-03 18:00:00  22    33   97.41 

如你所見,每個3個指標都有一個3小時的跳躍。我想通過使用均值作爲函數的索引進行分組。我使用:

grouped = df.groupby(level=0).mean() 

的問題是,我想可以肯定,如果有一個NaN的(例如,如果在2014年2月3日18:00:00,只有2項,第三個是NaN)我想要計算均值。我想使用numpy的的nanmean功能:

grouped = df.groupby(level=0).nanmean() 

nanmean不是GROUPBY的屬性,這是行不通的。你有什麼建議嗎?謝謝。

回答

1

我覺得你得到同樣的輸出,因爲GroupBy.mean省略NaN秒 - 同np.nanmean

print (df) 
        key1 key2 value 
2014-02-03 12:00:00 22.0 32.0 98.89 
2014-02-03 12:00:00 23.0 33.0 99.25 
2014-02-03 12:00:00 24.0 34.0 99.78 
2014-02-03 15:00:00 22.0 32.0 96.54 
2014-02-03 15:00:00 23.0 33.0 97.21 
2014-02-03 15:00:00 24.0 34.0 98.59 
2014-02-03 18:00:00 22.0 33.0 97.41 
2014-02-03 18:00:00 25.0 40.0 100.00 
2014-02-03 18:00:00 NaN NaN  NaN 


grouped = df.groupby(level=0).mean() 
print (grouped) 
        key1 key2  value 
2014-02-03 12:00:00 23.0 33.0 99.306667 
2014-02-03 15:00:00 23.0 33.0 97.446667 
2014-02-03 18:00:00 23.5 36.5 98.705000 

grouped = df.groupby(level=0).agg(np.nanmean) 
print (grouped) 
        key1 key2  value 
2014-02-03 12:00:00 23.0 33.0 99.306667 
2014-02-03 15:00:00 23.0 33.0 97.446667 
2014-02-03 18:00:00 23.5 36.5 98.705000 
+0

是的,我認爲你是完全正確的。感謝您使用''agg''的額外例子。 – David

+1

謝謝。文檔中還說明了「計算羣組的平均值,不包括缺失值」 - [[GroupBy.mean]](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.GroupBy。 mean.html) – jezrael

相關問題