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

如何在Pandas DataFrame中匹配列自动填充新增数据的score列

批量填充Pandas中新增观测的缺失Score值

核心思路是先从已有数据中构建color+food与score的对应关系映射,再用这个映射批量为新增数据填充缺失的score列,适合处理大量新增数据的场景。

步骤1:构建Score映射表

从已有DataFrame中提取color-food-score的对应关系,确保每个组合对应唯一的score值(如果已有数据中存在重复组合,可先做聚合处理,比如取均值、最大值)。

import pandas as pd

# 假设已有数据为 df_existing
df_existing = pd.DataFrame({
    'color': ['red', 'blue', 'green', 'red', 'blue'],
    'food': ['apple', 'banana', 'apple', 'banana', 'apple'],
    'age': [20, 25, 30, 35, 40],
    'score': [5.0, 6.0, 7.0, 8.0, 9.0]
})

# 若存在重复的color-food组合,用groupby聚合(示例取均值)
score_mapping = df_existing.groupby(['color', 'food'])['score'].mean()

步骤2:批量填充新增数据

将新增数据与映射表做左连接,自动匹配填充score列,未匹配到的组合会保留NaN(可根据需求后续处理)。

# 新增数据示例:仅含color、food、age,score缺失
df_new = pd.DataFrame({
    'color': ['red', 'blue', 'yellow'],
    'food': ['apple', 'banana', 'apple'],
    'age': [45, 50, 55]
})

# 左连接匹配填充score
df_new_filled = df_new.merge(
    score_mapping.reset_index(),
    on=['color', 'food'],
    how='left'
)

print(df_new_filled)
# 输出结果:
#    color    food  age  score
# 0    red   apple   45    5.0
# 1   blue  banana   50    6.0
# 2  yellow   apple   55    NaN

补充说明

  • 如果已有数据中color-food组合完全唯一,可以省略groupby,直接用drop_duplicates构建映射表:
    score_mapping = df_existing[['color', 'food', 'score']].drop_duplicates().set_index(['color', 'food'])['score']
    
  • 若需要将填充后的数据合并回原始DataFrame,直接执行pd.concat([df_existing, df_new_filled], ignore_index=True)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:50:26