Skip to main content
 首页 » 编程设计

python之如何获取 Pandas 数据框中所有非 NaN 项的行、列索引

2025年05月04日15txw1958

我如何像下面这样遍历数据框并将非 NaN 值位置作为元组返回。即

df: 
 
     0    1    2 
0    NaN NaN   1 
1    1   NaN  NaN 
2    NaN  2   NaN 

我会得到 [(0, 1), (2, 0), (1, 2)] 的输出。最好的方法是做一个嵌套的for循环吗?或者有没有我不知道的通过 Pandas 的更简单的方法。

请您参考如下方法:

假设您不需要顺序,您可以堆叠非空值并处理索引值。

In [26]: list(df[df.notnull()].stack().index) 
Out[26]: [(0L, '2'), (1L, '0'), (2L, '1')] 
 
In [27]: df[df.notnull()].stack().index 
Out[27]: 
MultiIndex(levels=[[0, 1, 2], [u'0', u'1', u'2']], 
           labels=[[0, 1, 2], [2, 0, 1]]) 

此外,使用堆栈方法,NaN 无论如何都会被忽略。

In [28]: list(df.stack().index) 
Out[28]: [(0L, '2'), (1L, '0'), (2L, '1')]