如何将TCGA基因组数据集多文件合并为Pandas DataFrame指定格式行?
处理TCGA基因组数据集并合并为宽格式DataFrame
实现步骤与代码
我们可以用pandas完成这个任务,核心思路是遍历样本清单,逐个读取基因文件并转置为行,再合并样本标识信息,最终整理成目标格式:
- 读取样本清单CSV:加载包含所有文件路径的总样本表格,获取每个病例的文件夹和文件名。
- 遍历处理每个基因文件:对每个文件,读取纵向的基因数据,转换为一行的宽格式,并添加上对应的
folder_name和file_name。 - 合并所有结果:收集每个文件处理后的行,合并成最终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
相关产品推荐
相关产品推荐

