You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用另一DataFrame的lead_id填充leads的id列空值且保留原值

解决方案:用target的lead_id填充leads的id空值(保留原有非空值)

核心需求是仅覆盖leads中id列的NaN值,保留已有非空id,同时适配两个DataFrame长度不一致的情况,以下是具体实现步骤:

步骤1:定位需要填充的空值位置

先获取leads中id列为空的布尔掩码:

null_mask = leads['id'].isna()

步骤2:生成匹配填充数量的lead_id序列

由于leads的空值数量(约28.5万)多于target的行数(约26.6万),需要重复target的lead_id来满足填充需求:

# 计算需要填充的空值总数
fill_count = null_mask.sum()
# 生成足够长度的填充序列,重复target的lead_id直到满足数量
fill_values = target['lead_id'].repeat((fill_count // len(target)) + 1).iloc[:fill_count].values

步骤3:填充空值(保留原有非空值)

通过布尔掩码定位空值位置,直接赋值:

leads.loc[null_mask, 'id'] = fill_values

简化写法

也可以用fillna直接结合生成的填充序列,一行完成:

# 生成与leads长度一致的填充序列
fill_series = pd.Series(target['lead_id'].repeat((len(leads) // len(target)) + 1).iloc[:len(leads)])
# 仅填充空值,保留原有id
leads['id'] = leads['id'].fillna(fill_series)

为什么concat不行?

concat是用于拼接DataFrame的行/列,不是针对空值的填充操作,会导致列合并或行堆叠,进而覆盖原有数据或打乱结构,完全不符合需求。

内容的提问来源于stack exchange,提问作者mouhamad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:05:29