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

Python中如何用pandas按另一列对应高频值填充DataFrame空值

实现方案(基于Pandas)

import pandas as pd
import numpy as np

# 构造示例数据,实际使用时替换为你自己的数据集读取逻辑即可,比如pd.read_excel/ pd.read_csv
data = {
    "ID": [0,1,2,3,4,5,6,7],
    "City": ["New York", np.nan, "London", "Mumbai", "Sydney", np.nan, "Sydney", "Brisbane"],
    "Country": ["USA", "USA", "UK", "IND", "AUS", "AUS", "AUS", "AUS"]
}
df = pd.DataFrame(data)

# 核心填充逻辑
df["City"] = df.groupby("Country")["City"].transform(
    lambda x: x.fillna(x.mode()[0])
)

# 输出结果验证
print(df)

逻辑说明

  • 首先按Country字段对整个数据集做分组,保证同国家的数据在同一个分组内处理
  • 对每个分组的City列使用mode()方法计算众数,也就是该国家出现频次最高的城市名
  • 用计算得到的众数填充当前分组内的所有NaN空值

边界情况兼容

如果存在某国家所有City值均为空的场景,可以修改lambda表达式增加容错判断,避免索引报错:

lambda x: x.fillna(x.mode()[0] if not x.mode().empty else "未知城市")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:54:03