2017-06-13 9 views
1

いいえ、グループ化するタイムスタンプインデックスのデータフレームがあります。NaNがあり、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() 

2014年2月3日午後06時00分00秒のためにだけ2エントリと三番目がある場合、問題は、私がNaN(例えばあるかどうことを確認したいということですNaNです)平均を計算します。

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

しかしnanmeanはGROUPBYの属性ではありません、それは動作しません:私は、numpyののnanmean機能を使用します。あなたは提案がありますか?ありがとう。

答えて

1

GroupBy.meanNaNの省略ので、私は、あなたが同じ出力を得ることだと思う - 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

ありがとうございます。 Docsには '' GroupBy.mean'(http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.GroupBy)の '欠落値を除いたグループの平均を計算する' mean.html) – jezrael

関連する問題