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

如何从df2取唯一值填充df1的0值且保证填充后无重复?附示例

解决方案

要实现用df2的唯一值填充df1中的0且保证最终无重复,可以按以下步骤操作:

核心思路

  1. 提取df1中已有的非0值,避免重复使用这些值进行填充
  2. 从df2中筛选出不在df1已有值中的元素作为填充候选
  3. 将这些候选值依次替换df1中的0位置

完整代码实现

import pandas as pd

# 初始化数据
data1 = {'test' :['b',0,'e',0,0,'f']}
df1 = pd.DataFrame(data=data1)

data2 = {'test' :['a','b','c','d','e','f']}
df2 = pd.DataFrame(data=data2)

# 提取df1中已存在的非0值
existing_vals = df1[df1['test'] != 0]['test'].tolist()

# 从df2筛选出可用于填充的候选值(排除已存在的)
fill_candidates = df2[~df2['test'].isin(existing_vals)]['test'].tolist()

# 找到df1中需要填充的位置
fill_positions = df1[df1['test'] == 0].index

# 替换填充
df1.loc[fill_positions, 'test'] = fill_candidates

print(df1)

运行结果

test
0    b
1    a
2    e
3    c
4    d
5    f

关键说明

  • ~df2['test'].isin(existing_vals):通过取反操作筛选出df2中未在df1出现过的值,从根源上避免填充后出现重复
  • 需确保填充候选值的数量等于df1中0的数量,否则会触发赋值不匹配错误。如果候选值不足,可根据需求补充逻辑(比如循环复用候选值或抛出提示)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:45:34