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

如何将新样本DataFrame的fano factor归一化至旧样本对应值?

归一化新样本Fano Factor到旧样本对应值的方法

核心思路是先把两个DataFrame里的同编号样本(A1/A2)关联起来,再基于对应旧样本的值做归一化计算。以下用Python pandas实现,步骤清晰适合初学者:

1. 模拟你的两个DataFrame

先把你给出的数据转换成pandas可处理的格式:

import pandas as pd

# 旧样本数据
df_old = pd.DataFrame({
    "sample name": ["A1 (old)", "A2 (old)"],
    "fano factor": [10, 9]
})

# 新样本数据
df_new = pd.DataFrame({
    "sample name": ["A1 (new)", "A2 (new)"],
    "fano factor": [9, 7]
})

2. 提取统一的样本标识

从带(old)/(new)的样本名里,提取出A1、A2这样的核心编号,方便后续匹配:

# 处理旧样本,去掉"(old)"
df_old["sample_id"] = df_old["sample name"].str.replace(r" \(old\)", "", regex=True)
# 处理新样本,去掉"(new)"
df_new["sample_id"] = df_new["sample name"].str.replace(r" \(new\)", "", regex=True)

3. 合并两个DataFrame

基于sample_id把新旧样本的Fano Factor合并到同一条记录中:

merged_df = pd.merge(df_new, df_old, on="sample_id", suffixes=("_new", "_old"))

合并后的结构如下:

sample name_newfano factor_newsample_idsample name_oldfano factor_old
A1 (new)9A1A1 (old)10
A2 (new)7A2A2 (old)9

4. 计算归一化值

根据需求选择常用的归一化方式:

  • 方式1:新样本值 ÷ 旧样本值:得到新样本相对于旧样本的比例
  • 方式2:(新样本值 - 旧样本值) ÷ 旧样本值:得到新样本相对旧样本的变化率

代码实现:

# 方式1:比例归一化
merged_df["normalized_fano_ratio"] = merged_df["fano factor_new"] / merged_df["fano factor_old"]

# 方式2:变化率归一化
merged_df["normalized_fano_change"] = (merged_df["fano factor_new"] - merged_df["fano factor_old"]) / merged_df["fano factor_old"]

比如A1的归一化比例是0.9(新样本是旧样本的90%),变化率是-0.1(比旧样本低10%),符合你的数据逻辑。

可选:整理结果列

如果只需要关键信息,可以筛选并重命名列:

result_df = merged_df[["sample name_new", "fano factor_new", "normalized_fano_ratio"]]
result_df.rename(columns={"sample name_new": "sample name"}, inplace=True)

内容的提问来源于stack exchange,提问作者Tom van Bokhoven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:38:22