我在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
换句话说,我需要用与value
和site
的特定组合相对应的值填充channel
列中的空值。
我该怎么做?
答案 0 :(得分:1)
如果每个组的最后一个非数字值都使用DataFrameGroupBy.bfill
,而所有其他值都是NaN
:
df1 = df.groupby(['site', 'channel']).bfill()
如果可能的话,最好的通用解决方案是只NaN
个组:
df1 = df.groupby(['site', 'channel']).apply(lambda x: x.bfill.ffill())