Python 在每行中查找前N个非空值
如果我有一个像这样的熊猫数据帧:Python 在每行中查找前N个非空值,python,python-3.x,pandas,Python,Python 3.x,Pandas,如果我有一个像这样的熊猫数据帧: NaN NaN NaN 0 5 7 2 2 3 7 8 NaN NaN 0 1 2 3 5 8 8 NaN 4 NaN 0 3 6 9 NaN 4 6 1 5 1 NaN NaN 0 1 2 3 5 8 8 NaN 2 NaN NaN NaN 0 5 7 2 2 3 7 8 NaN NaN 0 1 2 3 5 8 8 NaN 4 NaN NaN N
NaN NaN NaN 0 5 7 2 2 3 7 8
NaN NaN 0 1 2 3 5 8 8 NaN 4
NaN 0 3 6 9 NaN 4 6 1 5 1
NaN NaN 0 1 2 3 5 8 8 NaN 2
NaN NaN NaN 0 5 7 2 2 3 7 8
NaN NaN 0 1 2 3 5 8 8 NaN 4
NaN NaN NaN 0 5 7 2 2 NaN NaN NaN
NaN NaN 0 1 2 3 5 NaN NaN NaN NaN
NaN 0 3 6 9 NaN 4 NaN NaN NaN NaN
NaN NaN 0 1 2 3 5 NaN NaN NaN NaN
NaN NaN NaN 0 5 7 2 2 NaN NaN Nan
NaN NaN 0 1 2 3 5 NaN NaN NaN NaN
如何在每行中仅保留前五个非空值,并将其余值设置为nan,以便获得如下所示的数据帧:
NaN NaN NaN 0 5 7 2 2 3 7 8
NaN NaN 0 1 2 3 5 8 8 NaN 4
NaN 0 3 6 9 NaN 4 6 1 5 1
NaN NaN 0 1 2 3 5 8 8 NaN 2
NaN NaN NaN 0 5 7 2 2 3 7 8
NaN NaN 0 1 2 3 5 8 8 NaN 4
NaN NaN NaN 0 5 7 2 2 NaN NaN NaN
NaN NaN 0 1 2 3 5 NaN NaN NaN NaN
NaN 0 3 6 9 NaN 4 NaN NaN NaN NaN
NaN NaN 0 1 2 3 5 NaN NaN NaN NaN
NaN NaN NaN 0 5 7 2 2 NaN NaN Nan
NaN NaN 0 1 2 3 5 NaN NaN NaN NaN
您可以使用:
df.mask(df.notna().cumsum(axis=1).gt(5))
这是一个很好的答案。我刚刚在您完成(-)之后发布了此消息: