根据索引,如何用前面的值填充NaN值?

时间:2018-04-23 17:49:00

标签: python pandas dataframe group-by

我有一个大型的pandas数据框,在不同的列中有几个NaN值。每个NaN值都有一个关联的ID,我想用相关的id值来估算那些NaN值。例如,考虑:

ID  COL
1   23
1   NaN
1   NaN
1   NaN
1   NaN
2   21
2   NaN
2   NaN
2   NaN
3   25
3   NaN
3   NaN

如您所见,1与23相关联,因此所有具有1的ID必须用23估算,因此对于其他情况则为1。例如,预期输出为:

ID  COL
1   23
1   23
1   23
1   23
1   23
2   21
2   21
2   21
2   21
3   25
3   25
3   25

我怎么能用pandas做这样的操作?我的问题是我不知道如何处理以前的值并用它的id替换它。

更新

在阅读了这个问题和其他相关问题的答案后,我试着:

df.sort_values(['ID','COL']).ffill()

然而不起作用。它不会将值替换为与ID关联的值,原因是我的COL值可能是字符串。知道怎么处理这个吗?

1 个答案:

答案 0 :(得分:3)

带有sort_values

ffill

df.COL=df.sort_values(['ID','COL']).COL.ffill()
Out[381]: 
    ID   COL
0    1  23.0
1    1  23.0
2    1  23.0
3    1  23.0
4    1  23.0
5    2  21.0
6    2  21.0
7    2  21.0
8    2  21.0
9    3  25.0
10   3  25.0
11   3  25.0