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

如何将TCGA基因组数据集多文件合并为Pandas DataFrame指定格式行?

处理TCGA基因组数据集并合并为宽格式DataFrame

实现步骤与代码

我们可以用pandas完成这个任务,核心思路是遍历样本清单,逐个读取基因文件并转置为行,再合并样本标识信息,最终整理成目标格式:

  1. 读取样本清单CSV:加载包含所有文件路径的总样本表格,获取每个病例的文件夹和文件名。
  2. 遍历处理每个基因文件:对每个文件,读取纵向的基因数据,转换为一行的宽格式,并添加上对应的folder_name和file_name。
  3. 合并所有结果:收集每个文件处理后的行,合并成最终DataFrame,缺失的基因自动填充为NaN(可按需替换为空白或指定值)。

以下是完整代码:

import pandas as pd
import os

# 读取总样本CSV文件,替换为你的实际文件路径
sample_df = pd.read_csv("总样本CSV文件路径.csv")

# 初始化空列表存储每个文件的处理结果
result_rows = []

# 遍历每个样本
for idx, row in sample_df.iterrows():
    folder = row["folder_name"]
    filename = row["file_name"]
    file_path = os.path.join(folder, filename)
    
    # 读取基因文件,匹配逗号加空格的分隔符
    gene_data = pd.read_csv(file_path, sep=",\\s+", header=None, names=["gene", "value"])
    
    # 将纵向基因数据转置为宽格式,基因名作为列
    gene_wide = gene_data.set_index("gene").T
    
    # 添加样本标识列
    gene_wide["folder_name"] = folder
    gene_wide["file_name"] = filename
    
    # 调整列顺序,把样本标识放在最前面
    cols = ["folder_name", "file_name"] + list(gene_data["gene"].unique())
    gene_wide = gene_wide[cols]
    
    # 将当前行加入结果列表
    result_rows.append(gene_wide)

# 合并所有行,缺失基因自动填充为NaN
final_df = pd.concat(result_rows, ignore_index=True)

# 可选:将NaN替换为空白或N/A
final_df = final_df.fillna("")

# 查看最终结果
print(final_df)

关键细节说明

  • 分隔符处理:基因文件采用逗号加空格分隔,用sep=",\\s+"匹配可避免读取时出现多余空格问题。
  • 缺失基因处理:若文件缺少特定基因,pd.concat会自动在对应位置填充NaN,可通过fillna()替换为空白或"N/A"。
  • 路径兼容性:用os.path.join拼接路径,适配不同操作系统的路径格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:18:16