python - 在 Pandas 数据框中检索 NaN 值的索引

标签 python pandas machine-learning

我尝试为包含 NaN 值的每一行检索相应列的所有索引。

d=[[11.4,1.3,2.0, NaN],[11.4,1.3,NaN, NaN],[11.4,1.3,2.8, 0.7],[NaN,NaN,2.8, 0.7]]
df = pd.DataFrame(data=d, columns=['A','B','C','D'])
print df

      A    B    C    D
0  11.4  1.3  2.0  NaN
1  11.4  1.3  NaN  NaN
2  11.4  1.3  2.8  0.7
3  NaN   NaN  2.8  0.7

我已经完成了以下操作:

  • 为每行添加一个包含 NaN 计数的列
  • 获取包含 NaN 值的每一行的索引

我想要的(最好是列的名称)是得到这样的列表:

[ ['D'],['C','D'],['A','B'] ]

希望我能找到一种无需对每一行对每一列进行测试的方法

if df.ix[i][column] == NaN:

我正在寻找一种 pandas 方法来处理我庞大的数据集。

提前致谢。

最佳答案

使用 scipy 坐标格式稀疏矩阵检索空值的坐标应该是有效的:

import scipy.sparse as sp

x,y = sp.coo_matrix(df.isnull()).nonzero()
print(list(zip(x,y)))

[(0, 3), (1, 2), (1, 3), (3, 0), (3, 1)]

请注意,我调用 nonzero 方法只是为了输出底层稀疏矩阵中非零项的坐标,因为我不关心所有 的实际值>正确

关于python - 在 Pandas 数据框中检索 NaN 值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33641231/

相关文章:

python - TensorFlow:每个 session 运行是否在图中启动不同批处理的数据?

Python从文件中的正则表达式子字符串匹配中删除空格

python - 在Python中从大文件中选择部分记录的更有效方法

python - 除了在 python 中的 re.findall() 和 re.finditer() 中返回字符串和迭代器之外,它们的工作方式是否也有所不同?

python - 将两个每日系列合并为一小时系列

python - PyTorch: 'ToTensor()' 将彩色图片变成 9 张灰度图片

python - 如何更改 K 均值聚类的特征权重?

python - 将字符串拆分为python中的列表

python - 如何将函数应用于两列 Pandas 数据框

Python-按组计算连续频率