python - 使用 .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
解决方案
您可以在 boolean groupby 查询中填充 NaN 值:
tab = tab[tab['Event'].fillna(19).lt(20).groupby(tab['Clustername']).transform('all')]
它应该可以工作,但也会保留一个仅包含 NaN 值的组。如果您不希望这种行为,您可以替换fillna
为ffill().bfill()
tab = tab[tab['Event'].ffill().bfill().lt(20).groupby(tab['Clustername']).transform('all')]
推荐阅读
- networking - 使用 VLSM 设计寻址方案?
- excel - 返回具有特定条件的所有值
- json - 在 Json.NET 中处理字节顺序标记 (BOM) 字符
- matlab - 使用 cellfun 进行逻辑索引
- javascript - 在 Chrome 中使用 Open.Window 创建一个新的固定选项卡
- javascript - 如何查找数组上项目之间的距离 - javascript
- json.net - 使用 JSchema 手动创建 JSON 模式引用
- c - C标准是否指定在递增指针时进位传播多远?
- javascript - 如何使这个javascript数组值循环并在最后一个索引处停止
- c# - App.xaml 指向子文件夹中的库