我试图找到最近的索引,其值不是“NaN'相对于当前指数。所以,假设我有一个带有' NaN'的数据框架。像这样的价值观:
A B C
0 2.1 5.3 4.7
1 5.1 4.6 NaN
2 5.0 NaN NaN
3 7.4 NaN NaN
4 3.5 NaN NaN
5 5.2 1.0 NaN
6 5.0 6.9 5.4
7 7.4 NaN NaN
8 3.5 NaN 5.8
如果我目前在索引4,我有值:
A B C
4 3.5 NaN NaN
我想知道' B'相对于索引4,它位于索引1
:
A B C
1 5.1 -> 4.6 NaN
我知道我可以使用以下内容获取所有具有NaN值的索引的列表:
indexes = df.index[df['B'].apply(np.isnan)]
但是在大型数据库中这似乎效率低下。有没有办法tail
只相对于当前索引的最后一个?
答案 0 :(得分:5)
您可以尝试这样的操作,将index
转换为与列NaN
具有相同B
值的系列,然后使用带有最后一个非ffill()
的{{1}}所有后续NaN
s缺少索引转发:
import pandas as pd
import numpy as np
df['Last_index_notnull'] = df.index.to_series().where(df.B.notnull(), np.nan).ffill()
df['Last_value_notnull'] = df.B.ffill()
df
现在在索引4
,您知道最后一个非缺失值为4.6
,索引为1
。
答案 1 :(得分:4)