Пространственная интерполяция на панде Dataframe с определенной структурой с использованием словаря - PullRequest
0 голосов
/ 29 декабря 2018

Допустим, у меня есть pd DataFrame, который выглядит следующим образом:

                            price     volume     cat_count 
zipcode      date
91111.0      01/01/2018     10        5          NaN
             02/10/2018     NaN       9          NaN
94312.0      04/04/2018     7         4          6
             02/10/2018     NaN       3          4
96666.0      05/05/2018     NaN       3          14
             02/10/2018     NaN       NaN        8
             07/08/2018     NaN       0          NaN
98432.0      06/08/2018     4         NaN        NaN

И, скажем, у меня есть словарь, ключи которого - это почтовые индексы, а значения - это списки соседних почтовых индексов (в пределах x километров от того, что они вводят почтовый индекс), отсортировано по тому, насколько близко они находятся к ключевому почтовому индексу, причем ближе появляются первые.Этот словарь выглядит следующим образом:

nearby_zips = {
     91111.0 : [94312.0],
     94312.0 : [91111.0, 96666.0],
     96666.0 : [94312.0],
     98432.0 : []
}

Как я могу эффективно интерполировать данные, чтобы, если для любого столбца все значения были NaN в индексе почтового индекса, найти ближайший почтовый индекс, который имеет значения, отличные от NaN для указанного столбца,и используйте эти значения для заполнения почтового индекса, в котором есть все значения NaN для столбца.

Для справочного вывода в приведенном выше примере DataFrame будет выглядеть следующим образом:

                            price     volume     cat_count 
zipcode      date
91111.0      01/01/2018     10        5          NaN
             02/10/2018     NaN       9          4
             04/04/2018     NaN       NaN        6
94312.0      04/04/2018     7         4          6
             02/10/2018     NaN       3          4
96666.0      05/05/2018     NaN       3          14
             02/10/2018     NaN       NaN        8
             07/08/2018     NaN       0          NaN
             04/04/2018     7         NaN        NaN
98432.0      06/08/2018     4         NaN        NaN

Обратите внимание на данныев почтовых индексах 91111.0 и 96666.0 и как они изменились.

...