python - 保留在列中具有相同值的组内
问题描述
我有一个数据框,例如:
Groups Names Numbers Value
G1 Canis_lupus1 10.0 NaN
G1 Cattus_cattus4 10.0 NaN
G1 Homo_sapiens2 3.0 NaN
G1 Danio_rerio 1.0 NaN
G2 Canis_lupus2 10.0 0.3
G2 Cattus_cattus5 10.0 0.3
G3 Elaph_strangus2 2.0 NaN
G3 Elaph_strangus3 2.0 NaN
而且我只想保持在Groups
相同Names
和Numbers
NaN值的范围内。
所以我应该得到:
Groups Names Numbers Value
G1 Canis_lupus1 10.0 NaN
G1 Cattus_cattus4 10.0 NaN
G3 Elaph_strangus2 2.0 NaN
G3 Elaph_strangus3 2.0 NaN
有人有想法吗?
如果有帮助,这里是 dict 格式的数据框:
{'Groups': {0: 'G1', 1: 'G1', 2: 'G1', 3: 'G1', 4: 'G2', 5: 'G2', 6: 'G3', 7: 'G3'}, 'Names': {0: 'Canis_lupus1', 1: 'Cattus_cattus4', 2: 'Homo_sapiens2', 3: 'Danio_rerio1.0', 4: 'Canis_lupus2', 5: 'Cattus_cattus5', 6: 'Elaph_strangus2', 7: 'Elaph_strangus3'}, 'Numbers': {0: 10.0, 1: 10.0, 2: 3.0, 3: nan, 4: 10.0, 5: 10.0, 6: 2.0, 7: 2.0}, 'Value ': {0: nan, 1: 'NaN ', 2: nan, 3: nan, 4: '0.3', 5: '0.3', 6: nan, 7: 'NaN '}}
解决方案
- 创建布尔掩码以识别子集中的重复值
Groups
和Numbers
- 创建另一个布尔掩码以识别列中的
NaN
值Value
- 使用逻辑组合掩码
and
并过滤行
df[df.duplicated(['Groups', 'Numbers'], keep=False) & df['Value'].isna()]
Groups Names Numbers Value
0 G1 Canis_lupus1 10.0 NaN
1 G1 Cattus_cattus4 10.0 NaN
6 G3 Elaph_strangus2 2.0 NaN
7 G3 Elaph_strangus3 2.0 NaN
推荐阅读
- php - htaccess重写规则知识
- firebase - 使用 Firestore 作为数据库,如何在没有自由文本搜索的情况下向用户提供多个数据过滤器?
- r - R 用于搜索大型数据集的 for 循环的替代方案
- spring - Spring Kafka消费者线程池
- salesforce - 从 APEX SALESFORCE 映射和列出值
- javascript - tampermonkey JS 脚本中的 Dispatchevent 在第三次使用时不起作用
- .net - .Net Core 3.1 API 中的刷新令牌 Azure 广告身份验证
- tensorflow - 自定义DataGenerator tensorflow错误'ValueError:找不到可以处理输入的数据适配器'
- python-requests - 带有 python-requests 的 HTTP3 版本
- javascript - 使用 laravel 错误 419 csrf-token 调用 post 到 vue