我尝试为包含 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/