python pandas消除空值和空格以及 Nan数据替换方法


Posted in Python onOctober 30, 2018

在人工采集数据时,经常有可能把空值和空格混在一起,一般也注意不到在本来为空的单元格里加入了空格。这就给做数据处理的人带来了麻烦,因为空值和空格都是代表的无数据,而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 相关文章推荐
python实现将pvr格式转换成pvr.ccz的方法
Apr 28 Python
python获取当前日期和时间的方法
Apr 30 Python
python中lambda()的用法
Nov 16 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
python能做哪些生活有趣的事情
Sep 09 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
May 31 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 Python
使用django-guardian实现django-admin的行级权限控制的方法
Oct 30 #Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 #Python
Python格式化输出字符串方法小结【%与format】
Oct 29 #Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
Oct 29 #Python
pycharm执行python时,填写参数的方法
Oct 29 #Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 #Python
解决Pycharm运行时找不到文件的问题
Oct 29 #Python
You might like
自己动手做一个SQL解释器
2006/10/09 PHP
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
Vue.set 全局操作简单示例
2019/09/19 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python批量修改文件后缀的方法
2014/01/26 Python
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
用C++封装MySQL的API的教程
2015/05/06 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
文明宿舍获奖感言
2014/02/07 职场文书
小学生家长寄语
2014/04/02 职场文书
铁路安全事故反思
2014/04/26 职场文书
贷款担保申请书
2014/05/20 职场文书
七一建党节演讲稿
2014/09/11 职场文书
死亡诗社观后感
2015/06/05 职场文书