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

如何将Scanpy运行sc.tl.rank_genes_groups得到的基因列表导出为.csv文件

你只需要将生成的DataFrame赋值给变量后调用pandas内置的to_csv方法即可导出完整结果,完整可运行代码如下:

import pandas as pd

# 提取差异分析结果
result = adata_subset.uns['rank_genes_groups']
groups = result['names'].dtype.names

# 生成包含所有差异信息的DataFrame
deg_df = pd.DataFrame(
    {group + '_' + key[:1]: result[key][group]
    for group in groups for key in ['names','logfoldchanges','pvals','pvals_adj']}
)

# 导出为csv文件
deg_df.to_csv("scanpy差异基因结果.csv", index=False, encoding='utf-8-sig')

参数说明

  • index=False:导出时不保留pandas自动生成的行索引,避免csv出现无用的序号列,需要保留的话可以删除该参数或者改为index=True
  • encoding='utf-8-sig':保证包含特殊字符的基因名在Excel中打开时不会乱码,仅用做编程场景读取的话可以删除该参数使用默认编码

可选优化方案

如果你需要后续更方便地按细胞群筛选差异基因,可以将数据调整为长表格式再导出:

import pandas as pd

result = adata_subset.uns['rank_genes_groups']
groups = result['names'].dtype.names
deg_list = []

for group in groups:
    deg_list.append(pd.DataFrame({
        "细胞群": group,
        "基因名": result["names"][group],
        "log2倍数变化": result["logfoldchanges"][group],
        "p值": result["pvals"][group],
        "校正后p值": result["pvals_adj"][group]
    }))

full_deg_df = pd.concat(deg_list, ignore_index=True)
full_deg_df.to_csv("按细胞群拆分的差异基因结果.csv", index=False, encoding='utf-8-sig')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:18:02