如何获取 pandas 数据框中所有非NaN项的行,列索引 [英] How to get row, column indices of all non-NaN items in Pandas dataframe

查看:85
本文介绍了如何获取 pandas 数据框中所有非NaN项的行,列索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何遍历如下所示的数据框,并将非NaN值位置作为元组返回.即

How do I iterate over a dataframe like the following and return the non-NaN value locations as a tuple. i.e.

df:

     0    1    2
0    NaN NaN   1
1    1   NaN  NaN
2    NaN  2   NaN

我将得到[[0,1),(2,0),(1,2)]的输出.最好的方法是做一个嵌套循环吗?还是有一种我更不了解的通过熊猫的简便方法.

I would get an output of [(0, 1), (2, 0), (1, 2)]. Would the best way be to do a nested-for loop? Or is there an easier way I'm unaware of through Pandas.

推荐答案

假设您不需要按顺序排列,则可以堆叠非null值并处理索引值.

Assuming you don't need in order, you could stack the nonnull values and work on index values.

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仍然会被忽略.

Furthermore, using stack method, NaN are ignored anyway.

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

这篇关于如何获取 pandas 数据框中所有非NaN项的行,列索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆