python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用
来源:互联网 发布:linux php7环境搭建 编辑:程序博客网 时间:2024/06/16 22:52
我们在处理数据的时候,经常需要检查数据的质量,也需要知道出问题的数据在哪个位置。我找了很久,也尝试了很多办法,都没能找到一种非常直接的函数,本文所要介绍的是一种我认为比较方便的方法:np.where()
我举个例子
import pandas as pdimport numpy as npdf = pd.DataFrame(np.arange(12).reshape(4,3), index=list('abcd'), columns=list('xyz'))In [14]:dfOut[14]: x y za 0 1 2b 3 4 5c 6 7 8d 9 10 11
比如你想找到 5 的位置,你想知道它在第几行,第几列
In [16]: np.where(df==5)Out[16]: (array([1], dtype=int64), array([2], dtype=int64))
可以看到结果返回了一个元祖tuple,里面有两个元素,都是np.ndarray类型的,第一个是行号,第二个是指明列的位置,所以5 是在第2行,第3列
如果我们想检查数据里面掺杂的缺失值NaN的位置的,同样可以用此方法。
# 首先我们将df的第一列变成NaNdf.x = np.nandfOut[18]: x y za NaN 1 2b NaN 4 5c NaN 7 8d NaN 10 11# 然后查查NaN的位置,在写这篇blog的时候我也遇到了一个奇怪的事,上面我用np.nan赋值后,然后用df == np.nan判断,结果很奇怪In [28]: df == np.nanOut[28]: x y za False False Falseb False False Falsec False False Falsed False False False# 但是用 numpy 的另一个函数 np.isnan, 却可以判断出nan,具体原因还需要再研究研究np.isnan(df)Out[25]: x y za True False Falseb True False Falsec True False Falsed True False False# 因此接我们最初的目的,找出NaN的位置np.where(np.isnan(df))Out[32]: (array([0, 1, 2, 3], dtype=int64), array([0, 0, 0, 0], dtype=int64))np.where(np.isnan(df))[0] # 选出tuple里面的第一个元素,也就是行号Out[33]: array([0, 1, 2, 3], dtype=int64)
但如果你觉得只知道行号,列号不能满足你的需求,还想知道元素的索引名称
# 我们现在的df是这个样子的dfOut[34]: x y za NaN 1 2b NaN 4 5c NaN 7 8d NaN 10 11# 加入你想知道 NaN 所在的索引,列名,只需要在前面加上 df.index, df.columns 即可In [35]: df.index[np.where(np.isnan(df))[0]] Out[35]: Index(['a', 'b', 'c', 'd'], dtype='object')# df.index 是获取行名称,对应后面的[0]取行号In [36]: df.columns[np.where(np.isnan(df))[1]]Out[36]: Index(['x', 'x', 'x', 'x'], dtype='object')# df.columns 是获取列名称,对应后面的[1]取列号
Over
阅读全文
0 0
- python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用
- Python Pandas找到缺失值的位置
- pandas如何去掉、过滤数据集中的某些值或者某些行?
- pandas如何去掉、过滤数据集中的某些值或者某些行?
- Python:找到列表中满足某些条件的元素
- python pandas 位置索引
- python的nan,NaN,NAN
- numpy中np.nan(pandas中NAN)
- pandas.dataframe中根据条件获取元素所在的位置(索引)
- vector如何删除指定索引位置的元素?
- vector如何删除指定索引位置的元素
- np.where使用:根据条件生成新的数组
- 查询缺失的索引
- pandas中如何索引到某一列的特定值
- 如何新建索引:高开销的缺失索引
- 如何新建索引:高开销的缺失索引 转:
- python np.where()
- python np.where
- 推荐一款好用的加密软件 filepackage 文件加密 U盘加密 移动硬盘加密
- 伯努利试验和二项分布
- 使用jmap命令dump文件
- conda管理工具
- hdu 3018 Ant Trip
- python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用
- Android Studio个人理解
- Activiti5.22:删除工作流引擎自动创建的外键约束
- Node.js基本模块
- 【面试题】简单背包问题
- stl-map的一道很好的题目
- ChinaDDoS BGP 流量牵引二层VLAN回注配置
- Android 经典笔记之二:如何退出应用程序
- CC2640R2F BLE5.0 BLE连接参数更新过程详解