我在Pandas DataFrame中有这个:
site channel week value
0 Canada A W01 NaN
1 Canada A W02 NaN
2 Canada A W03 12
3 Canada B W01 NaN
4 Canada B W02 NaN
5 Canada B W03 66
我需要得到这个:
site channel week value
0 Canada A W01 12
1 Canada A W02 12
2 Canada A W03 12
3 Canada B W01 66
4 Canada B W02 66
5 Canada B W03 66
简而言之,我需要用对应于site
和channel
的特定组合的值填充列value
中的空值。
我该怎么做?
如果每个组的最后一个非数值始终是DataFrameGroupBy.bfill
,并且所有其他值都NaN
s,请使用:
df1 = df.groupby(['site', 'channel']).bfill()
如果可能的话,更好的通用解决方案,一些只NaN
s组:
df1 = df.groupby(['site', 'channel']).apply(lambda x: x.bfill.ffill())