Skip to main content
 首页 » 编程设计

python之根据另一个数据框中的列填充数据框中的空值

2025年05月04日12emanlee

我有一个这样的数据框df1。

我想用另一个数据帧 df2 中的多个值填充 nan 和 score 列中的数字 0 > 根据不同的名称。

我该怎么做?

请您参考如下方法:

选项 1
短版

df1.score = df1.score.mask(df1.score.eq(0)).fillna( 
    df1.name.map(df2.set_index('name').score) 
) 
df1 
 
  name  score 
0    A   10.0 
1    B   32.0 
2    A   10.0 
3    C   30.0 
4    B   20.0 
5    A   45.0 
6    A   10.0 
7    A   10.0 

选项 2
使用 searchsorted 的有趣版本。 df2 必须按 'name' 排序。

i = np.where(np.isnan(df1.score.mask(df1.score.values == 0).values))[0] 
j = df2.name.values.searchsorted(df1.name.values[i]) 
df1.score.values[i] = df2.score.values[j] 
df1 
 
  name  score 
0    A   10.0 
1    B   32.0 
2    A   10.0 
3    C   30.0 
4    B   20.0 
5    A   45.0 
6    A   10.0 
7    A   10.0