python - 检索非 nan 值的 (index,column) 元组

标签 python numpy pandas

假设我有这个数据框

pd.DataFrame([[1,np.nan,np.nan],[np.nan,np.nan,np.nan],[np.nan,6,np.nan]])

函数应该返回元组数组:

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

最佳答案

您可以使用 numpy 函数 isnanwhere:

>>> df = pd.DataFrame([[1,np.nan,np.nan],[np.nan,np.nan,np.nan],[np.nan,6,np.nan]])
>>> np.where(~np.isnan(df))
(array([0, 2]), array([0, 1]))

要按照所示的确切方式获取数据:

>>> inds = np.where(~np.isnan(df))
>>> zip(*inds)
[(0, 0), (2, 1)]

使用 pandas 内置函数,您必须对所有系列应用 notnull(),然后无论如何调用一个 numpy 函数到 DataFrame。

编辑:显然 pandas 在 0.13 中有一个用于数据帧的 notnull 函数,您可以将所有 ~np.isnan(df) 替换为 df.notnull() 如果你愿意的话。

关于python - 检索非 nan 值的 (index,column) 元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22361666/

相关文章:

python - 在 Python 中传递多个不同的函数参数

python - python中的异常

python - 如何有效地使用索引数组作为掩码将 numpy 数组转换为 bool 数组?

即使两个数组相同,Numpy 返回 False?

python - matplotlib 中每日时间序列数据的每月阴影误差/标准图

python - 这些 X 和 Y 变量如何在线性回归中使用?

python pandas如何有选择地删除重复项

python - 如何在python中读取json对象

python - 如何在代码迭代时追加到列表并保存列表(对于 twitch 聊天机器人)

python - pandas 中的项目总和并写入文件