You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中筛选列值非空且保留唯一Gene_ID行的方法

数据框筛选与去重解决方案

需求说明

处理包含ID、Gene_ID、Value列的数据框,需完成:

  • 保留Value非空的行
  • 排除Gene_ID为空的行
  • 每个Gene_ID仅保留一行

示例数据构建

import pandas as pd

# 构建示例数据框
data = {
    'ID': [6, 7, 8, 9],
    'Gene_ID': ['26470', '10878', '', '26470'],
    'Value': [1.137318, -1.051181, -1.316229, -1.015734]
}
df = pd.DataFrame(data)

处理步骤

1. 基础筛选

先过滤掉Value为空或Gene_ID为空的行:

# 筛选条件:Value非空 且 Gene_ID不为空字符串
filtered_df = df[(df['Value'].notna()) & (df['Gene_ID'] != '')]

2. 按Gene_ID去重

保留每个Gene_ID第一次出现的行(若需保留其他逻辑,如最值行可调整):

# 按Gene_ID去重,保留首个匹配行
result_df = filtered_df.drop_duplicates(subset='Gene_ID', keep='first')

结果输出

执行后得到期望结果:

print(result_df)

输出:

ID Gene_ID     Value
0   6   26470  1.137318
1   7   10878 -1.051181

可选扩展:按特定规则保留行

如果需要保留每个Gene_ID对应Value最大/最小的行,可使用分组操作:

# 保留每个Gene_ID中Value最大的行
result_df = filtered_df.groupby('Gene_ID', as_index=False).apply(lambda x: x.loc[x['Value'].idxmax()])

内容的提问来源于stack exchange,提问作者F_Keikha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 15:48:30