首页 > 解决方案 > 如何通过每行的非 nan 值计数提取此数据框中的所有非 nan 值

问题描述

我想提取每行数据帧中的非 nan 值。
我得到一个数据框,其行数超过 3000,如下所示:

# this is just an example, not whole data
  l1     l2     l3
0 2      nan    nan
1 1      nan    nan
2 3      4      nan
3 1      2      4
4 3      2      nan
5 4      1      2
6 5      nan    nan

我想通过每行的非 nan 值计数来提取此数据框中的所有非 nan 值,如下所示

one_non_nan_value_counts
    l1
0   2
1   1
2   5

two_non_nan_value_counts
    l1    l2    
0   3     4
1   3     2

three_non_nan_value_counts
    l1    l2    l3
0   1     2     4
1   4     1     2

有什么可以帮助我的吗?
提前致谢。

标签: pythonpandasdataframe

解决方案


国际大学联盟:

for x,y in df.groupby(df.isna().sum(axis=1)):
    print('nan', x)
    print(y.dropna(axis=1))

输出:

nan 0
   l1   l2   l3
3   1  2.0  4.0
5   4  1.0  2.0
nan 1
   l1   l2
2   3  4.0
4   3  2.0
nan 2
   l1
0   2
1   1
6   5

推荐阅读