假设我有这个数据框
pd.DataFrame([[1,np.nan,np.nan],[np.nan,np.nan,np.nan],[np.nan,6,np.nan]])
该函数应该返回元组数组:
[(0,0), (2,1)]
答案 0 :(得分:3)
您可以使用numpy函数isnan
和where
:
>>> 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
DataFrames函数,如果愿意,你可以用~np.isnan(df)
替换所有df.notnull()
。