我有一个大型的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值可能是字符串。知道怎么处理这个吗?
答案 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