获取熊猫数据框各列中最后一个非NaN值的行索引

aha*_*hat 2 numpy nan scipy python-2.7 pandas

如何为熊猫数据框的每一列返回最后一个非Nan值的行索引位置,并将位置作为熊猫数据框返回?

EdC*_*ica 6

notnull专门使用和idxmax获取非NaN值的索引值

In [22]:

df = pd.DataFrame({'a':[0,1,2,NaN], 'b':[NaN, 1,NaN, 3]})
df
Out[22]:
    a   b
0   0 NaN
1   1   1
2   2 NaN
3 NaN   3
In [29]:

df[pd.notnull(df)].idxmax()
Out[29]:
a    2
b    3
dtype: int64
Run Code Online (Sandbox Code Playgroud)

编辑

实际上,正如@Caleb正确指出的,您可以使用last_valid_index为此设计的:

In [3]:
df = pd.DataFrame({'a':[3,1,2,np.NaN], 'b':[np.NaN, 1,np.NaN, -1]})
df

Out[3]:
    a   b
0   3 NaN
1   1   1
2   2 NaN
3 NaN  -1

In [6]:
df.apply(pd.Series.last_valid_index)

Out[6]:
a    2
b    3
dtype: int64
Run Code Online (Sandbox Code Playgroud)