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

如何让Pandas按列类型自动填充DataFrame中的NaN值

按列类型自动填充Pandas DataFrame的NaN值

可以通过映射列数据类型到对应填充值的方式,让Pandas自动识别列类型并完成批量填充,无需手动逐个指定列。以下是两种实用实现方式:

方法一:类型映射字典(高效批量处理)

先定义数据类型与填充值的对应规则,再生成每列的填充参数,最后调用fillna()完成填充:

示例代码

import pandas as pd
import numpy as np

# 构造测试数据
df = pd.DataFrame({
    "Name": ["Alice", np.nan, "Bob", np.nan],
    "Age": [25, np.nan, 30, np.nan],
    "Score": [90.5, np.nan, 85.0, np.nan],
    "Is_Student": [True, np.nan, False, np.nan]
})
# 将Name列转为Pandas专用string类型(比object类型更准确识别字符串列)
df["Name"] = df["Name"].astype("string")

# 定义类型-填充值映射规则(可根据需求扩展)
fill_rules = {
    "string": "",          # 字符串列填充空字符串
    "int64": 0,            # 整数列填充0
    "float64": 0.0,        # 浮点数列填充0.0
    "boolean": False       # 布尔列填充False
}

# 为每列生成对应填充值
fill_values = {col: fill_rules[str(df[col].dtype)] for col in df.columns}

# 执行填充
filled_df = df.fillna(fill_values)

方法二:apply逐列判断(灵活扩展)

通过apply()遍历每一列,根据列的dtype动态选择填充逻辑,适合需要复杂判断的场景:

示例代码

import pandas as pd
import numpy as np

# 构造测试数据(同方法一)
df = pd.DataFrame({
    "Name": ["Alice", np.nan, "Bob", np.nan],
    "Age": [25, np.nan, 30, np.nan],
    "Score": [90.5, np.nan, 85.0, np.nan],
    "Is_Student": [True, np.nan, False, np.nan]
})
df["Name"] = df["Name"].astype("string")

# 定义按类型填充的函数
def fill_col_by_dtype(series):
    dtype_str = str(series.dtype)
    if "string" in dtype_str:
        return series.fillna("")
    elif "int" in dtype_str or "float" in dtype_str:
        return series.fillna(0)
    elif "bool" in dtype_str:
        return series.fillna(False)
    # 其他类型(如datetime)可自行添加规则
    else:
        return series

# 逐列应用填充逻辑
filled_df = df.apply(fill_col_by_dtype, axis=0)

注意事项

  • 若使用旧版Pandas的object类型存储字符串,建议先转为string专用类型,避免类型识别误差;
  • 支持扩展填充规则,比如对datetime64类型填充默认日期(如pd.Timestamp("1900-01-01"));
  • 对于Nullable类型(如带空值的Int64整数类型),需在fill_rules中添加对应的dtype映射(如"Int64": 0)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:15:32