簡體   English   中英

Pandas - 在基於 MultiIndex 的 DataFrame 上重新采樣

[英]Pandas - Resample on MultiIndex based DataFrame

我有一個df ,它有一個 MultiIndex [(latitude, longitude, time)],行數為 148 x 244 x 90 x 24。對於每個緯度和經度,時間是從 2014-01-01 00:00 開始的每小時:00 至 2014:03:31 23:00:00。

                                                FFDI
latitude    longitude   time    
-39.20000   140.80000   2014-01-01 00:00:00     6.20000
                        2014-01-01 01:00:00     4.10000
                        2014-01-01 02:00:00     2.40000
                        2014-01-01 03:00:00     1.90000
                        2014-01-01 04:00:00     1.70000
                        2014-01-01 05:00:00     1.50000
                        2014-01-01 06:00:00     1.40000
                        2014-01-01 07:00:00     1.30000
                        2014-01-01 08:00:00     1.20000
                        2014-01-01 09:00:00     1.00000
                        2014-01-01 10:00:00     1.00000
                        2014-01-01 11:00:00     0.90000
                        2014-01-01 12:00:00     0.90000
                        ... ... ... ...
                        2014-03-31 21:00:00     0.30000
                        2014-03-31 22:00:00     0.30000
                        2014-03-31 23:00:00     0.50000
            140.83786   2014-01-01 00:00:00     3.20000
                        2014-01-01 01:00:00     2.90000
                        2014-01-01 02:00:00     2.10000
                        2014-01-01 03:00:00     2.90000
                        2014-01-01 04:00:00     1.20000
                        2014-01-01 05:00:00     0.90000
                        2014-01-01 06:00:00     1.10000
                        2014-01-01 07:00:00     1.60000
                        2014-01-01 08:00:00     1.40000
                        2014-01-01 09:00:00     1.50000
                        2014-01-01 10:00:00     1.20000
                        2014-01-01 11:00:00     0.80000
                        2014-01-01 12:00:00     0.40000
                        ... ... ... ...
                        2014-03-31 21:00:00     0.30000
                        2014-03-31 22:00:00     0.30000
                        2014-03-31 23:00:00     0.50000
            ... ... ... ...
... ... ...
-33.90000   140.80000   2014-01-01 00:00:00     6.20000
                        2014-01-01 01:00:00     4.10000
                        2014-01-01 02:00:00     2.40000
                        2014-01-01 03:00:00     1.90000
                        2014-01-01 04:00:00     1.70000
                        2014-01-01 05:00:00     1.50000
                        2014-01-01 06:00:00     1.40000
                        2014-01-01 07:00:00     1.30000
                        2014-01-01 08:00:00     1.20000
                        2014-01-01 09:00:00     1.00000
                        2014-01-01 10:00:00     1.00000
                        2014-01-01 11:00:00     0.90000
                        2014-01-01 12:00:00     0.90000
                        ... ... ... ...
                        2014-03-31 21:00:00     0.30000
                        2014-03-31 22:00:00     0.30000
                        2014-03-31 23:00:00     0.50000
            140.83786   2014-01-01 00:00:00     3.20000
                        2014-01-01 01:00:00     2.90000
                        2014-01-01 02:00:00     2.10000
                        2014-01-01 03:00:00     2.90000
                        2014-01-01 04:00:00     1.20000
                        2014-01-01 05:00:00     0.90000
                        2014-01-01 06:00:00     1.10000
                        2014-01-01 07:00:00     1.60000
                        2014-01-01 08:00:00     1.40000
                        2014-01-01 09:00:00     1.50000
                        2014-01-01 10:00:00     1.20000
                        2014-01-01 11:00:00     0.80000
                        2014-01-01 12:00:00     0.40000
                        ... ... ... ...
                        2014-03-31 21:00:00     0.30000
                        2014-03-31 22:00:00     0.30000
                        2014-03-31 23:00:00     0.50000

78001920 rows × 1 columns

我想要實現的是計算每個緯度和經度每 24 小時(前一天 13:00:00 - 第二天 12:00:00)的每日最大 FFDI 值。 如何在基於 MultiIndex 的 DF 上使用 DataFrame.resample()?

編輯:更新的要求換句話說,一個日期的每日最大 FFDI 值應使用從前一天 13:00:00 到當天 12:00:00 的每小時值計算。 time列的時區是 UTC。 這樣我就可以為我的時區解決問題。 例如,如果計算 2014-01-10 的每日最大 FFDI,我可以使用從 2014-01-09 13:00:00 到 2014-01-10 12:00:00 的每小時 FFDI。

根據@jezrael 的回答,我使用了以下代碼:

df_daily_max = df .groupby(['latitude', 'longitude', pd.Grouper(freq='24H',base=13,loffset='11H',level='time')])['FFDI'].max().reset_index(name='Max FFDI')

我試圖將時間標簽偏移 13 小時,所以我期待日期以“2014-01-01”開頭,但它以“2013-12-31 13:00:00”開頭。

DataFrame.groupby中使用Groupermax聚合:

df.groupby(['latitude', 'longitude', pd.Grouper(freq='D', level='time')])['FFDI'].max().reset_index(name='Max FFDI')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM