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

Python爬取COVID数据集后无法将DataFrame空单元格替换为0求解

问题描述

使用Python的BeautifulSoup和Selenium爬取COVID数据集生成的DataFrame中,部分列存在空单元格,无法将这些空值替换为0,尝试现有解决方案均无效,原始代码如下:

def recode_empty_cells(dataframe, list_of_columns):

    for column in list_of_columns:
        dataframe[column] = dataframe[column].replace('\xa0',0)
        dataframe[column] = dataframe[column].replace(" ",0)
        dataframe[column] = dataframe[column].fillna(0)

    return dataframe
recode_empty_cells(df, df.columns)
解决方案

失效原因

  • 没有覆盖爬取数据常见的所有空白类型,包括空字符串""、多个连续空格、制表符\t、全角空格\u3000等场景
  • 调用函数时没有将返回的DataFrame赋值给原变量,函数内的修改不会同步到外部的df对象

修正后代码

import pandas as pd
import numpy as np

def recode_empty_cells(dataframe, list_of_columns):
    for column in list_of_columns:
        # 正则匹配所有全空白字符串转为空值
        dataframe[column] = dataframe[column].replace(r'^\s*$', np.nan, regex=True)
        # 覆盖特殊空格类型
        dataframe[column] = dataframe[column].replace(['\xa0', '\u3000'], np.nan)
        # 统一填充0
        dataframe[column] = dataframe[column].fillna(0)
    return dataframe

# 必须接收返回值赋值给原变量才会生效
df = recode_empty_cells(df, df.columns)

验证及排查方法

  • 执行print(df.isna().sum())可快速查看所有列剩余空值数量,确认替换效果
  • 如果仍有空值未被替换,执行以下代码查看未匹配空值的实际字符编码,补充到replace的替换规则中即可:
print(df[df['待排查列名'].apply(lambda x: isinstance(x, str) and x.isspace() or pd.isna(x))]['待排查列名'].apply(repr).unique())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:51:02