Python Pandas处理空值与空格及NaN替换方案
本文介绍在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数据替换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













