Pandas - 在基于多索引的 DataFrame 上重新采样并使用偏移量

问题描述

我有一个 df,它有一个 MultiIndex [(latitude,longitude,time)],行数为 148 x 244 x 90 x 24。对于每个纬度和经度,时间是从 { 开始的每小时UTC 格式的 {1}} 到 2014-01-01 00:00:00

2014:03:31 23:00:00

我需要使用从前一天的 13:00:00 到当天的 12:00:00 的每小时值来计算某个日期的每日最大 FFDI 值以适合我的时区 (+11)。例如,如果在 +11 时区计算 2014-01-10 的每日最大 FFDI,我可以使用从 2014-01-09 13:00:00 到 2014-01-10 12:00:00 的每小时 FFDI。

                                                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

计算从 13:00:00 开始,频率为 24 小时。

输出为:

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

………………

我希望输出为:

    latitude                    longitude                   time                    Max FFDI
0   -39.20000076293945312500    140.80000305175781250000    2013-12-31 13:00:00     6.19999980926513671875
1   -39.20000076293945312500    140.80000305175781250000    2014-01-01 13:00:00     1.50000000000000000000
2   -39.20000076293945312500    140.80000305175781250000    2014-01-02 13:00:00     1.60000002384185791016

………………

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)