2017-12-18 11 views
1

私は時間という名前のdatetime列を持つPandasデータフレームを持っています。 1時間あたりの行数を数えたいと思います。問題は、結果のテーブルが行が存在しない時間を処理したいということです。例:日付でグループ化されたデータフレームに欠落データを追加する

time id lat lon type 
0 2017-06-09 19:34:59.945128-07:00 75 36.999866 -122.058180 UPPER CAMPUS 
1 2017-06-09 19:53:56.387058-07:00 75 36.979664 -122.058900 OUT OF SERVICE/SORRY 
2 2017-06-09 19:28:53.525189-07:00 75 36.988640 -122.066820 UPPER CAMPUS 
3 2017-06-09 19:30:31.633478-07:00 75 36.991657 -122.066605 UPPER CAMPUS 

私は生産df.groupby(df.time.dt.hour).count()を使用して、これらの値を取得できます。

time id lat lon type 
time      
0 2121 2121 2121 2121 2121 
1 2334 2334 2334 2334 2334 
2 1523 1523 1523 1523 1523 
6 8148 8148 8148 8148 8148 
正しい

:0、1、2日の時間ですが。しかし、3時間、4時間、5時間の行がないことを表明したいと思います。これらの列名をそれぞれ持つことは、値が同じであるため不要です。

答えて

1

あなたはreindexを使用することができます。

#if want all hours 
df1 = df.groupby(df.time.dt.hour)[''].count().reindex(range(23), fill_value=0) 

#if want 0 to max hour 
df1 = df.groupby(df.time.dt.hour).count() 
     .reindex(range(df.time.dt.hour.max() + 1), fill_value=0) 
+0

感謝を。私は私の質問でそれを言及しなかったが、実際には、fill_value = 0パラメータを使用して、NaNを取得するのではなく、再インデックスすることを望んでいました。しかし、この答えは正しいです。 –

関連する問題