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

如何基于同类前置有效值填充缺失值?现有代码误全量替换NaN求助

问题解决:精准填充城市对应的缺失国家值

原始数据

city        state    country Continent
Saint-Denis NaN      France  Europe
Saint-Denis NaN      NaN     Europe
Saint-Denis NaN      NaN     Europe
Kinshasa    NaN      NaN     Africa
Kinshasa    NaN      NaN     Africa

问题代码的错误原因

你写的循环代码里,df.country = 'France'是给整个列赋值,不是只修改当前符合条件的行。只要循环里触发一次if判断,所有行的country都会被改成France,自然会把其他城市的缺失值也覆盖了。

精准修复方案

1. 针对单个城市的精准修改

用布尔索引定位目标行,只修改这些行的country:

import pandas as pd

# 定位城市为Saint-Denis且country为空的行,赋值为France
df.loc[(df['city'] == 'Saint-Denis') & (df['country'].isna()), 'country'] = 'France'

2. 多城市批量填充(更通用)

如果有多个城市需要匹配国家,先做映射字典,再批量填充:

# 定义城市与对应国家的映射关系
city_country_map = {
    'Saint-Denis': 'France',
    'Kinshasa': 'Democratic Republic of the Congo'
}

# 用映射填充缺失的country值,仅对有映射的城市生效
df['country'] = df['country'].fillna(df['city'].map(city_country_map))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:10:40