根据索引级别将值分配给多索引数据框

时间:2019-09-26 11:32:47

标签: pandas dataframe multi-index

我有一个多索引数据帧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...SNR1gridcode_1是索引,但是值仅源自index(level=0)。 总共有133个index(level=0),所以我想找到一个通用函数,用附属值替换0

1 个答案:

答案 0 :(得分:1)

使用Series.mask替换为MultiIndex第一级的GroupBy.transformGroupBy.first创建的系列:

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

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