大熊猫-有条件地用其他行值填充空行值

时间:2018-08-24 14:18:26

标签: pandas numpy dataframe

我有一个看起来像这样的表(比率列是根据代号和日期从另一个表合并的):

date         codename   ratio
2018-01-01   A          .5
2018-02-01   A          
2018-03-01   A          
2018-01-01   B          
2018-02-01   B
2018-01-01   C          .6
2018-02-01   C            
2018-03-01   C          .7
2018-04-01   C

我需要使用给出的代号最新值

输出应为:

date         codename   ratio
2018-01-01   A          .5
2018-02-01   A          .5
2018-03-01   A          .5
2018-01-01   B          
2018-02-01   B
2018-01-01   C          .6
2018-02-01   C          .6  
2018-03-01   C          .7
2018-04-01   C          .7

得到0.5,因为那是唯一的价值。 B保持空,因为它没有比率。 C填充了2月的.6,​​因为那是一月的值,但它的四月的值是0.7,因为那是三月的值。

1 个答案:

答案 0 :(得分:2)

您可以使用.fillna()来填充NaN值,并且其method参数可以使您向前或向后填充。在这种情况下,我们希望按codename分组,以确保我们不会填写不同的名称。

假设您的数据帧称为df

df['ratio'] = df.groupby('codename')['ratio'].fillna(method='ffill')

应该做到这一点。打印df之后,我们得到了答案:

         date codename  ratio
0  2018-01-01        A    0.5
1  2018-02-01        A    0.5
2  2018-03-01        A    0.5
3  2018-01-01        B    NaN
4  2018-02-01        B    NaN
5  2018-01-01        C    0.6
6  2018-02-01        C    0.6
7  2018-03-01        C    0.7
8  2018-04-01        C    0.7