如何获得数据帧行中的最后五个连续值?

2024-04-20 07:47:54 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有这样的数据框:

0     1 5 7 3   7 1 9   2 NaN 4 3 NaN 3 2

1     1 3 2 8   4 2 NaN 2 NaN 3 1 0   4 1

2     1 5 1 NaN 7 3 2   1 3   5 0 NaN 2 1

3     1 4 5 3   1 2 NaN 1 3   1 2 NaN 2 1

如何在每行中找到最后五个连续值?如下所示:

3 7 1 9 2

3 1 0 4 1

2 1 3 5 0

4 5 3 1 2

Tags: 数据nan
1条回答
网友
1楼 · 发布于 2024-04-20 07:47:54

让我们试试这个:

df.T.apply(lambda x:  x[x.groupby(x.isnull().cumsum()).transform('count')>4].dropna().tail(5).values).T

     0    1    2    3    4
0  3.0  7.0  1.0  9.0  2.0
1  3.0  1.0  0.0  4.0  1.0
2  2.0  1.0  3.0  5.0  0.0
3  4.0  5.0  3.0  1.0  2.0

或者

df.apply(lambda x: pd.Series(x[x.groupby(x.isnull().cumsum()).transform('count')>4].dropna().tail(5).values), axis=1)

输出:

     0    1    2    3    4
0  3.0  7.0  1.0  9.0  2.0
1  3.0  1.0  0.0  4.0  1.0
2  2.0  1.0  3.0  5.0  0.0
3  4.0  5.0  3.0  1.0  2.0

相关问题 更多 >