我有许多具有以下结构的数据框。 TRCODEP 10101 10201 20101 20201 20203 43826 4:00:00 NaN NaN NaN NaN 43827 NaN NaN NaN NaN NaN 43828 NaN 20:00:00 NaN NaN NaN 43829 NaN NaN NaN 20:35:00 NaN 43830 20:45:00 NaN NaN NaN NaN 43829 NaN NaN 02:00:00 NaN NaN对于每个数据框,我想创建一个新的数据框,以选择该列中具有非NaN条目的10101行以及前三行。我遇到了麻烦,因为您可能会在10101上面看到多个非NaN条目。而且,即使解决了这个问题,我似乎也无法使用df['10101'].notna().index[0]and来分割数据帧df['10101'].notna().index[0]-3。我有什么选择?
1 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
没那么难。您可以使用Series.last_valid_index和切片来做到这一点:
# get index of last valid non-null value in 10101
idx = df.index.get_loc(df['10101'].last_valid_index())
# slice rows (with some minor bounds checking)
df.iloc[max(0, idx - 3):idx + 1]
TRCODEP 10101 10201 20101 20201 20203
1 43827 NaN NaN NaN NaN NaN
2 43828 NaN 20:00:00 NaN NaN NaN
3 43829 NaN NaN NaN 20:35:00 NaN
4 43830 20:45:00 NaN NaN NaN NaN
添加回答
举报
0/150
提交
取消
