如果我有一个这样的Pandas数据框:
A B C D E F G H I J
1 1 NaN 1 1 NaN 1 NaN 1 1 1
2 NaN NaN 1 NaN 1 1 1 1 NaN NaN
3 NaN NaN NaN 1 1 1 NaN 1 1 NaN
4 1 1 1 1 NaN NaN NaN 1 1 NaN
如何找到每行中最后一个值簇,以便获得如下所示的数据框:
A B C D E F G H I J
1 NaN NaN NaN NaN NaN NaN NaN 1 1 1
2 NaN NaN NaN NaN 1 1 1 1 NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN 1 1 NaN
4 NaN NaN NaN NaN NaN NaN NaN 1 1 NaN
答案 0 :(得分:3)
IIUC使用cumsum
和布尔过滤器
s=df.isnull().cumsum(1)
df=df[s.eq(s[df.notnull()].max(1),axis=0)]
df
Out[17]:
A B C D E F G H I J
1 NaN NaN NaN NaN NaN NaN NaN 1 1.0 1.0
2 NaN NaN NaN NaN 1.0 1.0 1.0 1 NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN 1 1.0 NaN
4 NaN NaN NaN NaN NaN NaN NaN 1 1.0 NaN