我有以下df:
> df_mm.sort('days').head(10)
letters days count key
0 c 1 10 1
2248 b 1 NaN NaN
2376 b 1 NaN NaN
2504 b 1 NaN NaN
9996 a 1 NaN NaN
2632 c 1 13 1
2736 c 1 23 1
9892 c 1 23 1
2840 d 1 NaN NaN
2946 a 1 NaN NaN
我想将fillna()
应用于按字母分组的每组行。我,做到这一点:
df_mm[df_filled.letters == 'a'].fillna(method='ffill')
每个字母,并自动合并结果。
感谢。
答案 0 :(得分:2)
我认为你需要:
print df.groupby('letters').apply(lambda x: x.fillna(method='ffill'))
示例(我修改df
进行测试):
print df
letters days count key
0 c 1 10 1
2248 b 1 5 7
2376 b 1 NaN NaN
2504 b 1 NaN NaN
9996 a 1 11 23
2632 c 1 13 1
2736 c 1 23 1
9892 c 1 23 1
2840 d 1 NaN NaN
2946 a 1 NaN NaN
print df.groupby('letters').apply(lambda x: x.fillna(method='ffill'))
letters days count key
0 c 1 10 1
2248 b 1 5 7
2376 b 1 5 7
2504 b 1 5 7
9996 a 1 11 23
2632 c 1 13 1
2736 c 1 23 1
9892 c 1 23 1
2840 d 1 NaN NaN
2946 a 1 11 23