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

Pandas中匹配DataFrame转录本合并数据及遍历列执行相同操作的方法

Pandas DataFrame匹配合并及批量列处理实现方案

1. 按转录本字段匹配合并两个DataFrame

你的需求是基于转录本ID的关联匹配,直接使用Pandas内置的merge方法即可实现,性能远高于手动匹配,适合大体量数据:

import pandas as pd
import numpy as np

# 核心合并逻辑,左连接保证df1的所有记录都被保留
merged_df = pd.merge(
    left = df1, # 以包含探针集的表为左表
    right = df2, # 包含受试者数据的表为右表
    left_on = 'Transcript', # 左表关联字段名
    right_on = 'transcript_id', # 右表关联字段名
    how = 'left' # 左连接,未匹配到的受试者数据会填充为NaN
).drop(columns = ['transcript_id']) # 删除重复的转录本ID列

执行后得到的merged_df就是你给出的预期输出结果。

2. 遍历列名执行统一处理操作

Pandas有两种常用的列批量处理方式,优先选择向量化操作提升大体量数据的处理效率:

方式1:显式遍历列名

# 遍历所有列名
for col in merged_df.columns:
    # 可先判断列类型,避免字符串列执行数值操作报错
    if pd.api.types.is_numeric_dtype(merged_df[col]):
        # 此处替换为你需要的统一处理逻辑,示例为对数值列做标准化
        merged_df[col] = (merged_df[col] - merged_df[col].mean()) / merged_df[col].std()

方式2:apply批量按列处理(更高效)

# 自定义列处理函数
def col_process(col):
    if pd.api.types.is_numeric_dtype(col):
        # 示例操作:数值列缺失值填充为0
        return col.fillna(0)
    # 非数值列直接返回原值
    return col

# axis=0指定按列执行处理
merged_df = merged_df.apply(col_process, axis=0)

注意:处理大体量数据时,尽量避免嵌套循环逐行操作,优先使用Pandas内置的向量化函数,性能可提升几十到上百倍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:57:02