This question already has answers here:
Fill in missing pandas data with previous non-missing value, grouped by key
                                
                                    (3个答案)
                                
                        
                                2年前关闭。
            
                    
我有一个大熊猫数据框,在不同的列中有几个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来估算,因此在其他情况下一个。例如,预期的输出将是:

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值可能是字符串。对如何处理这个有任何想法吗?

最佳答案

sort_valuesffill

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

关于python - 基于索引,如何用先前的上述值填充NaN值? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49987108/

10-14 18:11