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

如何用另一DataFrame填充pandas电影DataFrame中的NaN值?

用另一个DataFrame填充pandas电影DataFrame的NaN值

核心思路

以tittle作为匹配标识,定位df_amazon中存在空值的电影记录,用df_disney中对应电影的有效值替换空值,同时保留df_amazon原有的非空数据,忽略df_disney中独有的记录。


步骤1:构建示例数据

先还原你提供的两个数据集:

import pandas as pd
import numpy as np

df_amazon = pd.DataFrame({
    'tittle': ['a'],
    'genre': ['b'],
    'director': [np.nan]
})

df_disney = pd.DataFrame({
    'tittle': ['a'],
    'genre': ['b'],
    'director': ['c']
})

方法1:使用combine_first(简洁推荐)

这个方法会自动用df_disney的值填充df_amazon的NaN,且不会覆盖原有的非空数据。只需先将两个DataFrame的索引设为tittle确保匹配对齐:

# 设置tittle为索引,保证匹配精度
df_amazon_idx = df_amazon.set_index('tittle')
df_disney_idx = df_disney.set_index('tittle')

# 填充NaN并重置索引
df_amazon_filled = df_amazon_idx.combine_first(df_disney_idx).reset_index()

执行后df_amazon_filled的director列空值会被替换为'c',其他列保留原数据。


方法2:合并后精准填充(适合自定义控制)

如果需要只填充特定列的空值,可通过合并后手动处理:

# 按tittle左合并,保留df_amazon所有记录
merged = df_amazon.merge(df_disney, on='tittle', suffixes=('_amz', '_dis'), how='left')

# 用disney的director填充amazon的空值
merged['director'] = merged['director_amz'].fillna(merged['director_dis'])

# 还原原列结构
df_amazon_filled = merged[['tittle', 'genre_amz', 'director']].rename(columns={'genre_amz': 'genre'})

处理重复记录

如果df_disney中存在同一电影(相同tittle)的多条记录,先去重确保每个电影只保留一条有效数据:

# 去重:保留每个tittle的第一条记录
df_disney_clean = df_disney.drop_duplicates(subset='tittle', keep='first')

# 再用上述任一方法完成填充

内容的提问来源于stack exchange,提问作者Juan Alberto Esequiel Jara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:31:00