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

如何按Sample_Name将含重复样本ID的DataFrame与参考数据集做减法

问题描述

我有以下两个数据集:

参考数据集 ref_df

Sample_NameValue
CTRL18.17
E-119.06
FIB17.78
10nM Benz17.89

实验数据集 df1

Sample_NameValue
CTRL27.49
E-128.89
FIB24.81
10nM Benz24.24
CTRL27.36
E-128.87
FIB24.66
10nM Benz24.32

需要实现df1的每个样本值减去ref_df中对应Sample_Name的参考值,得到如下目标结果df_result:

目标结果 df_result

Sample_NameValue
CTRL9.32
E-19.83
FIB7.03
10nM Benz6.35
CTRL9.19
E-19.81
FIB6.88
10nM Benz6.43

要求保留df1中的重复样本,但直接复制ref_df匹配行数时,减法无法按Sample_Name对应匹配,请问该如何解决?

解决方案

方法1:使用map快速匹配参考值

将ref_df转换为以Sample_Name为键的字典,通过map为df1的每一行匹配对应参考值,再执行减法:

import pandas as pd

# 构造示例数据
ref_df = pd.DataFrame({
    'Sample_Name': ['CTRL', 'E-1', 'FIB', '10nM Benz'],
    'Value': [18.17, 19.06, 17.78, 17.89]
})

df1 = pd.DataFrame({
    'Sample_Name': ['CTRL', 'E-1', 'FIB', '10nM Benz', 'CTRL', 'E-1', 'FIB', '10nM Benz'],
    'Value': [27.49, 28.89, 24.81, 24.24, 27.36, 28.87, 24.66, 24.32]
})

# 转换为Sample_Name到参考值的字典
ref_mapping = ref_df.set_index('Sample_Name')['Value'].to_dict()

# 匹配参考值并计算差值
df1['Ref_Value'] = df1['Sample_Name'].map(ref_mapping)
df_result = df1.assign(Value=df1['Value'] - df1['Ref_Value']).drop(columns='Ref_Value')

# 输出保留两位小数的结果
print(df_result.round(2))

方法2:使用merge左连接匹配

通过左连接将ref_df的参考值合并到df1中,确保每个样本行都能匹配到对应参考值,再计算差值:

import pandas as pd

# 构造示例数据,重命名参考值列避免冲突
ref_df = pd.DataFrame({
    'Sample_Name': ['CTRL', 'E-1', 'FIB', '10nM Benz'],
    'Value': [18.17, 19.06, 17.78, 17.89]
}).rename(columns={'Value': 'Ref_Value'})

df1 = pd.DataFrame({
    'Sample_Name': ['CTRL', 'E-1', 'FIB', '10nM Benz', 'CTRL', 'E-1', 'FIB', '10nM Benz'],
    'Value': [27.49, 28.89, 24.81, 24.24, 27.36, 28.87, 24.66, 24.32]
})

# 左连接匹配参考值
merged_df = pd.merge(df1, ref_df, on='Sample_Name', how='left')
# 计算差值并整理结果
df_result = merged_df.assign(Value=merged_df['Value'] - merged_df['Ref_Value']).drop(columns='Ref_Value')

print(df_result.round(2))

两种方法均能保留df1的原始行顺序和重复样本,输出结果与目标一致。map方法代码更简洁,适合参考数据集样本名称唯一的场景;merge方法灵活性更强,可应对更复杂的匹配逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 12:12:42