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

如何根据DataFrame中对应样本dv列条件筛选同样本其他列的行数据

实现思路

你需要的是按样本分组独立过滤,不能用全局行过滤(全局过滤会删除整行,影响所有样本列),正确方案是先按样本对列分组,每个组单独按自身dv列的条件处理,最后合并结果。

具体实现代码
import pandas as pd
import numpy as np

# 步骤1:按列名提取样本编号,将列按所属样本分组
col_sample_map = {col: ''.join(filter(str.isdigit, col)) for col in df.columns}
sample_groups = {}
for col, sample_id in col_sample_map.items():
    sample_groups.setdefault(sample_id, []).append(col)

# 步骤2:每个样本组单独按dv>0的条件过滤
processed_list = []
for sample_id, group_cols in sample_groups.items():
    dv_col = f'dv{sample_id}'
    # where方法:条件满足保留原值,不满足则填充NaN,仅作用于当前样本组的列
    processed_group = df[group_cols].where(df[dv_col] > 0)
    processed_list.append(processed_group)

# 步骤3:合并所有处理后的样本组得到最终结果
df_new = pd.concat(processed_list, axis=1)
效果说明
  • 每个样本组的过滤逻辑完全独立,仅对自身列生效,不会影响其他样本的列数据
  • 当某行当前样本的dv值≤0或为空时,该行当前样本的所有列都会被设为NaN,符合保留符合条件的对应行值的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:15:03