当前位置: 移动技术网 > IT编程>脚本编程>Python > python pandas消除空值和空格以及 Nan数据替换方法

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

2018年11月03日  | 移动技术网IT编程  | 我要评论

冠美传奇,商丘师范学院教务处,美剧君meijujun

在人工采集数据时,经常有可能把空值和空格混在一起,一般也注意不到在本来为空的单元格里加入了空格。这就给做数据处理的人带来了麻烦,因为空值和空格都是代表的无数据,而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数据替换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网