熊猫:根据其他多个列中的值填充空值

时间:2018-08-10 17:54:15

标签: python pandas null

我在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      

换句话说,我需要用与valuesite特定组合相对应的值填充channel列中的空值。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果每个组的最后一个非数字值都使用DataFrameGroupBy.bfill,而所有其他值都是NaN

df1 = df.groupby(['site', 'channel']).bfill()

如果可能的话,最好的通用解决方案是只NaN个组:

df1 = df.groupby(['site', 'channel']).apply(lambda x: x.bfill.ffill())