首页 > 解决方案 > 使用 .lt(number).groupby().transform('all') 没有 NaN

问题描述

你好,我有一个命令允许 mee 只保留组中的值小于 20。但有时值可以是 NaN,即使所有值都小于 20,这个组也会被删除。

我使用这个命令:

tab=tab[tab['Event'].lt(20).groupby(tab['Clustername']).transform('all')]

我怎么能避免考虑到 NaN 值,例如

Clustername                                              query  Event
883137  Cluster84095     scaffold_4869:1428-4284(+):sp29    5.0
883138  Cluster84095     scaffold_4869:1428-4284(+):sp29    5.0
883139  Cluster84095     scaffold_4869:1428-4284(+):sp29    5.0
883140  Cluster84095     scaffold_4869:1428-4284(+):sp29    5.0
883141  Cluster84095   scaffold_1254:1696-5479(+):sp1    2.0
883142  Cluster84095   scaffold_1254:1696-5479(+):sp1    2.0
883143  Cluster84095   scaffold_1254:1696-5479(+):sp1    2.0
883144  Cluster84095   scaffold_1254:1696-5479(+):sp1    2.0
883145  Cluster84095        scaffold_4174:4132-5446(+):sp2    NaN
883146  Cluster84095        scaffold_4174:4132-5446(+):sp2    NaN
883147  Cluster84095        scaffold_4174:1944-3504(+):sp2    NaN
883148  Cluster84095      scaffold_2714:1163-4220(+):sp4    5.0
883149  Cluster84095      scaffold_2714:1163-4220(+):sp4    5.0
883150  Cluster84095      scaffold_2714:1163-4220(+):sp4    5.0
883151  Cluster84095      scaffold_2714:1163-4220(+):sp4    5.0
883152  Cluster84095  IDBA_scaffold_2184:3542-6539(+):sp7   4.0
883153  Cluster84095  IDBA_scaffold_2184:3542-6539(+):sp7   4.0
883154  Cluster84095  IDBA_scaffold_2184:3542-6539(+):sp7   4.0
883155  Cluster84095  IDBA_scaffold_2184:3542-6539(+):sp7   4.0
883156  Cluster84095  IDBA_scaffold_1712:13782-16775(-):sp9    4.0
883157  Cluster84095  IDBA_scaffold_1712:13782-16775(-):sp9    4.0
883158  Cluster84095  IDBA_scaffold_1712:13782-16775(-):sp9    4.0
883159  Cluster84095  IDBA_scaffold_1712:13782-16775(-):sp9    4.0
883160  Cluster84095  scf7180005173345:6698-9667(-):sp12    4.0
883161  Cluster84095  scf7180005173345:6698-9667(-):sp12    4.0
883162  Cluster84095  scf7180005173345:6698-9667(-):sp12    4.0
883163  Cluster84095  scf7180005173345:6698-9667(-):sp12    4.0
883164  Cluster84095     JZSA01000885.1:34358-37408(-):sp3    3.0
883165  Cluster84095     JZSA01000885.1:34358-37408(-):sp3    3.0
883166  Cluster84095     JZSA01000885.1:34358-37408(-):sp3    3.0
883167  Cluster84095     JZSA01000885.1:34358-37408(-):sp3    3.0
917159  Cluster84095                                                NaN    1.0

标签: pythonpandas

解决方案


您可以在 boolean groupby 查询中填充 NaN 值:

tab = tab[tab['Event'].fillna(19).lt(20).groupby(tab['Clustername']).transform('all')]

它应该可以工作,但也会保留一个仅包含 NaN 值的组。如果您不希望这种行为,您可以替换fillnaffill().bfill()

tab = tab[tab['Event'].ffill().bfill().lt(20).groupby(tab['Clustername']).transform('all')]

推荐阅读