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

使用Pandas按重复组和样本名匹配计算两组条件的含量比值

计算条件组间同重复同样本的含量比值解决方案

Hey,我来帮你搞定这个需求!咱们可以通过Pandas的拆分、合并和计算三步来实现你要的比值,具体操作如下:

1. 先拆分两个条件组的数据

首先把原DataFrame拆成条件组1和条件组2的子集,同时给它们的amount列重命名,避免后续合并时列名冲突:

# 提取条件组1的数据,并重命名含量列
cond1 = df[df['condition'] == 1].rename(columns={'amount': 'cond1_amount'})
# 提取条件组2的数据,同理重命名
cond2 = df[df['condition'] == 2].rename(columns={'amount': 'cond2_amount'})

2. 按重复组和样本名匹配合并

接下来用replicate和sample作为匹配键做内连接,这样就能精准把同一重复组、同一样本的两条数据对应到一起:

# 内连接只保留两边都有的配对数据
matched_df = pd.merge(cond1, cond2, on=['replicate', 'sample'], how='inner')

3. 计算比值并整理结果

最后新增一列ratio,用条件组1的含量除以条件组2的含量就搞定了:

matched_df['ratio'] = matched_df['cond1_amount'] / matched_df['cond2_amount']

# 可以选择只展示需要的列,让结果更清晰
result_df = matched_df[['replicate', 'sample', 'cond1_amount', 'cond2_amount', 'ratio']]
print(result_df)

完整可运行代码(含测试数据)

如果你还没构造好DataFrame,这里给你带测试数据的完整代码,直接就能跑:

import pandas as pd

# 构造你提供的示例数据集
data = {
    'condition': [1,1,1,1,2,2,2,2],
    'replicate': [1,1,2,2,1,1,2,2],
    'sample': ['a1','a2','a1','a2','b99','a2','a1','a2'],
    'amount': [5,2,3,1,7,4,3,2]
}
df = pd.DataFrame(data)

# 拆分条件组
cond1 = df[df['condition'] == 1].rename(columns={'amount': 'cond1_amount'})
cond2 = df[df['condition'] == 2].rename(columns={'amount': 'cond2_amount'})

# 匹配合并
matched_df = pd.merge(cond1, cond2, on=['replicate', 'sample'], how='inner')

# 计算比值
matched_df['ratio'] = matched_df['cond1_amount'] / matched_df['cond2_amount']

# 输出结果
print("计算结果:")
print(matched_df[['replicate', 'sample', 'cond1_amount', 'cond2_amount', 'ratio']])

运行结果

执行后你会得到如下结果:

replicate sample  cond1_amount  cond2_amount  ratio
0          1     a2             2             4    0.5
1          2     a1             3             3    1.0
2          2     a2             1             2    0.5

这里要说明一下:条件组1里重复组1的a1,在条件组2的重复组1里找不到对应样本,所以不会出现在结果里;同理条件组2的b99在条件组1没有匹配项,也被过滤掉了,完全符合你要的“同一重复组且样本名相同”的计算要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:46:48