我想在多索引数据帧上使用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)))
) 如何在每个组上使用该功能?
答案 0 :(得分:0)
如果您要填充的值始终是问题中建议的第一个值,则可以使用以下方法。
df = df.groupby(level= "fooTitle").ffill()