我是靠谱客的博主 坚强煎蛋,最近开发中收集的这篇文章主要介绍python pandas消除空值和空格以及 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]
  • 1
  • 2
  • 3

方法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()]
  • 1
  • 2
  • 3

将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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输出结果:

 col1
col2
col3
0
a
1
11
1
b
2
NaN
col1
col2
col3
0
a
1
11
1
b
2
None
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

总结:

方法1的思路就是直接判定是否为空格,把空格纳入到选择中来。方法2的思路是先把空格转换为NaN,然后正常使用.isnull()或.notnull()来得到我们想要的数据.

转载自:https://blog.csdn.net/alanhu1024/article/details/49155891

最后

以上就是坚强煎蛋为你收集整理的python pandas消除空值和空格以及 Nan数据替换的全部内容,希望文章能够帮你解决python pandas消除空值和空格以及 Nan数据替换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部