当panda中所有特定4列的值都是NaN时,删除行



我有一个如下所示的df

df:

ID       Type         Desc         D_N    D_A    C_N     C_A
1        Edu          Education    3      100    NaN     NaN
1        Bank         In_Pay       NaN    NaN    8       900
1        Eat          Food         4      200    NaN     NaN
1        Edu          Education    NaN    NaN    NaN     NaN
1        Bank         NaN          NaN    NaN    4       700
1        Eat          Food         NaN    NaN    NaN     NaN
2        Edu          Education    NaN    NaN    1       100
2        Bank         In_Pay       NaN    NaN    8       NaN
2        Eat          Food         4      200    NaN     NaN
3        Edu          Education    NaN    NaN    NaN     NaN
3        Bank         NaN          2      300    NaN     NaN
3        Eat          Food         NaN    NaN    NaN     NaN

关于df:

每当D_N非NaN时,D_A应为非NaN,同时C_NC_A应为NaN,反之亦然。

在上面的数据中,我想过滤D_ND_AC_NC_A中任何一个都不是NaN 的行

预期输出:

ID       Type         Desc         D_N    D_A    C_N     C_A
1        Edu          Education    3      100    NaN     NaN
1        Bank         In_Pay       NaN    NaN    8       900
1        Eat          Food         4      200    NaN     NaN
1        Bank         NaN          NaN    NaN    4       700
2        Edu          Education    NaN    NaN    1       100
2        Bank         In_Pay       NaN    NaN    8       NaN
2        Eat          Food         4      200    NaN     NaN
3        Bank         NaN          2      300    NaN     NaN
print(df.dropna(subset=["D_N", "D_A", "C_N", "C_A"], how="all"))

打印:

ID  Type       Desc  D_N    D_A  C_N    C_A
0    1   Edu  Education  3.0  100.0  NaN    NaN
1    1  Bank     In_Pay  NaN    NaN  8.0  900.0
2    1   Eat       Food  4.0  200.0  NaN    NaN
4    1  Bank        NaN  NaN    NaN  4.0  700.0
6    2   Edu  Education  NaN    NaN  1.0  100.0
7    2  Bank     In_Pay  NaN    NaN  8.0    NaN
8    2   Eat       Food  4.0  200.0  NaN    NaN
10   3  Bank        NaN  2.0  300.0  NaN    NaN

相关内容

  • 没有找到相关文章