繁体   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