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

使用Pandas操作与过滤数据集:跨数据集匹配填充NaN值

用Pandas填充数据集空值的解决方案

看起来你需要把dataset2里的用户详细信息,匹配填充到dataset1中对应姓名的空值列里——毕竟dataset1里同一个姓名对应多个分组,而dataset2里每个姓名只有一条完整数据对吧?用Python的Pandas库就能轻松实现,我给你一步步来:

1. 先构造示例数据(和你描述的一致)

首先我们先把你说的两个数据集用代码还原出来,方便后续操作:

import pandas as pd

# 构造你的dataset1:同一个Name对应多个Group,其余列空值
dataset1 = pd.DataFrame({
    'Name': ['John Smith', 'John Smith', 'John Smith', 'James Man'],
    'Group': [1, 2, 3, 1],
    'Colour': [pd.NA, pd.NA, pd.NA, pd.NA],
    'Age': [pd.NA, pd.NA, pd.NA, pd.NA],
    'Title': [pd.NA, pd.NA, pd.NA, pd.NA],
    'JobRole': [pd.NA, pd.NA, pd.NA, pd.NA]
})

# 构造你的dataset2:每个Name对应一条完整数据
dataset2 = pd.DataFrame({
    'Name': ['John Smith', 'James Man'],
    'Colour': ['Red', 'Orange'],
    'Age': [35, 21],
    'Title': ['Mr', 'Mr'],
    'JobRole': ['SuperMan', 'SuperMan']
})

2. 核心填充操作(两种方法任选)

方法一:简洁的combine_first法(推荐)

这个方法能自动把dataset2的信息匹配到dataset1的所有同名行,而且会保留dataset1原有的Group列:

# 先把dataset2以Name为索引,方便按姓名匹配
dataset2_indexed = dataset2.set_index('Name')

# 对dataset1设置Name为索引,用dataset2的数据填充空值,最后恢复原索引
dataset1_filled = dataset1.set_index('Name').combine_first(dataset2_indexed).reset_index()

方法二:显式合并法(更直观)

如果你想更清晰地看到匹配过程,可以用merge左连接,再手动填充空值:

# 按Name左连接两个数据集,suffixes区分原列和来自dataset2的列
merged_data = dataset1.merge(dataset2, on='Name', how='left', suffixes=('', '_from_dataset2'))

# 遍历需要填充的列,用dataset2的值替换原空值
for col in ['Colour', 'Age', 'Title', 'JobRole']:
    dataset1[col] = merged_data[col].fillna(merged_data[f'{col}_from_dataset2'])

3. 验证结果

不管用哪种方法,最终dataset1_filled(或者修改后的dataset1)都会变成:

NameGroupColourAgeTitleJobRole
John Smith1Red35MrSuperMan
John Smith2Red35MrSuperMan
John Smith3Red35MrSuperMan
James Man1Orange21MrSuperMan

完美符合你的需求:每个姓名的所有分组行都填充上了dataset2里对应的数据。

额外提示

如果dataset2里有重复的姓名条目,记得先去重,避免匹配出错:

# 保留每个Name的第一条数据,删除重复项
dataset2 = dataset2.drop_duplicates(subset='Name', keep='first')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:11:37