Python Pandas处理空值与空格及NaN替换方案

听雨眠
听雨眠
发布时间:2026-10-13| 5人浏览过
原创

本文介绍在Python Pandas中处理数据清洗时遇到的空值与空格混合问题。通过两种方法:一是利用布尔数组筛选,二是使用apply函数将空格转为NaN后处理,并结合具体代码示例展示如何替换DataFrame中的NaN值,帮助开发者更准确地获取有效数据。

在人工采集数据的过程中,经常会出现将空值与空格混淆的情况,且往往难以察觉原本为空的单元格中混入了空格。这给数据处理工作带来了困扰,因为空值和空格在逻辑上都代表无数据,但Pandas中Series的notnull()方法会将包含空格的數據也视为有效数据,导致无法完整获取目标数据。这里提供一种简单的处理方案来解决该问题。

方法1:

既然我们认为空值和空格都代表无数据,那么可以先构建一个能识别这两种情况的布尔数组。

假设我们的DataFrame类型数据集为df,其中包含一个名为VIN的变量。我们可以通过构建一个布尔数组NONE_VIN来标识空值和空格的情况,随后利用该布尔数组筛选出我们真正需要的数据。

NONE_VIN = (df["VIN"].isnull()) | (df["VIN"].apply(lambda x: str(x).isspace()))
df_null = df[NONE_VIN]
df_not_null = df[~NONE_VIN]

方法2:

可以直接使用Series的.apply方法来修改变量VIN中的每个值。具体逻辑是:如果发现该值是空格,则将其返回为Nan;否则,保持原值不变。

df["VIN"]=df["VIN"].apply(lambda x: np.NaN if str(x).isspace() else x)
df_null = df[df["VIN"].isnull()]
df_not_null = df[df["VIN"].notnull()]

接下来,将dataframe中的NaN替换为期望的值。

import pandas as pd
df1 = pd.DataFrame([{'col1':'a', 'col2':1}, {'col1':'b', 'col2':2}])
df2 = pd.DataFrame([{'col1':'a', 'col3':11}, {'col1':'c', 'col3':33}])

data = pd.merge(left=df1, right=df2, how='left', left_on='col1', right_on='col1')
print data
# 将NaN替换为None
print data.where(data.notnull(), None)

输出结果:

 col1 col2 col3
0 a  1 11
1 b  2 NaN
 col1 col2 col3
0 a  1 11
1 b  2 None

总结:

方法1的核心思路是直接判断数据是否为空格,并将空格纳入筛选条件中。方法2的思路则是先将空格转换为NaN,然后正常使用.isnull()或.notnull()方法来获取我们想要的数据。

以上这篇python pandas消除空值和空格以及 Nan数据替换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。