我有一个多索引Pandas,我想使用ffill()来填充某些列中的所有NaNs。下面的代码显示了示例数据的结构,以及下一个快照中ffill()的结果。
room = ['A', 'B']
val = range(3)
df = pd.DataFrame(columns=pd.MultiIndex.from_product([room, val]),data=np.random.randn(3,6))
df.loc[1,('B',0)]=np.nan
# print(df.loc[1,('B',0)])
display(df)
df = df.ffill(axis=1)
display(df)

我希望得到的是,在1,('B',0)处的NaN被替换为-0.392674,而不是-1.349675。通常,我希望能够从级别1(0、1、2)的对应列中获得ffill()。
我怎样才能做到这一点?
发布于 2019-05-24 03:25:40
我想你是在找groupby fillna
df=df.groupby(level=1,axis=1).fillna(method='ffill')
df
Out[496]:
A B
0 1 2 0 1 2
0 -0.177358 -1.531091 -0.945004 1.665143 0.602459 -0.008192
1 -0.006995 0.472267 -0.859471 -0.006995 -0.601538 -0.410391
2 0.101494 1.031941 0.499288 0.804391 -0.224750 -0.778403https://stackoverflow.com/questions/56285416
复制相似问题