Присвоение значений мультииндексированному фрейму данных на основе уровня индекса - PullRequest
1 голос
/ 26 сентября 2019

У меня есть мультииндексированный фрейм данных df1 с тремя индексами, значения которых принадлежат только первому индексу.Однако после слияния информационный фрейм разделился, что привело к различным 0.Теперь я хочу заменить 0 значениями, относящимися к первому уровню индекса.

Вот извлечение из фрейма данных:

FID_Weser_Catchments_134_WQ_Stations_FINAL_LAEA... SNR1  gridcode_1               
1                                                  6631  2           543738.387186
                                                         3           543738.387186
                                                         4           543738.387186
                                                   6632  1           543738.387186
                                                         2           543738.387186
                                                         3           543738.387186
                                                         4           543738.387186
                                                   6633  2                0.000000
                                                         3                0.000000
                                                   6634  2                0.000000
                                                   6636  1           543738.387186
                                                         2           543738.387186
                                                         3           543738.387186
                                                         4           543738.387186
                                                   9473  2           543738.387186
                                                         3           543738.387186
                                                   9673  2           543738.387186
                                                         3           543738.387186
                                                         4           543738.387186
                                                   16054 1           543738.387186

FID_Weser_Catchments..., SNR1 иgridcode_1 являются индексами, но значения происходят только от index(level=0).Всего их 133 index(level=0), поэтому я хочу найти общую функцию для замены 0 на дочернее значение.

1 Ответ

1 голос
/ 26 сентября 2019

Используйте Series.mask с заменой на серию, созданную GroupBy.transform с GroupBy.first на первом уровне MultiIndex:

first = s.groupby(level=0).transform('first')

s = s.mask(s == 0, first)
...