如何在分组数据框上使用fillna?

时间:2019-04-10 19:31:45

标签: python pandas

我想在多索引数据帧上使用fillna,并且仅在某列保留在同一索引中时才填充该列。下一个索引可能以n / a开头,因此我无法在该列上调用fillna。群组的大小正在变化,因此我无法通过数字限制功能。

如果df是:

1                     Val
fooTitle barTitle        
foo      foo1       valueA
         foo2       NaN
         foo3       NaN
bar      bar1       NaN
         bar2       NaN
         bar3       NaN
         bar4       NaN
baz      baz1       valueB
         baz2       NaN
         baz3       NaN

我希望是这样

1                     Val
fooTitle barTitle        
foo      foo1       valueA
         foo2       valueA
         foo3       valueA
bar      bar1       NaN
         bar2       NaN
         bar3       NaN
         bar4       NaN
baz      baz1       valueB
         baz2       valueB
         baz3       valueB

我对使用groupby()很累,但是在指南中他们特别指出组对象是不可变的。 (他们特别提到fillna:

  

不对组块执行就地操作。组块   应该被视为不可变的,并且对组块的更改可能会   产生意想不到的结果。例如,当使用fillna时,   必须为False(grouped.transform(lambda x:x.fillna(inplace = False)))

) 如何在每个组上使用该功能?

1 个答案:

答案 0 :(得分:0)

如果您要填充的值始终是问题中建议的第一个值,则可以使用以下方法。

df = df.groupby(level= "fooTitle").ffill()