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

如何将PyDESeq2的DeseqStats对象转换为Pandas DataFrame?

将PyDESeq2的DeseqStats对象转换为Pandas DataFrame

你之前的代码报错是因为PyDESeq2的DeseqStats对象没有tables属性——那套通过HTML中转的方法是R语言DESeq2的常用技巧,但PyDESeq2作为Python实现,有自己的原生API来直接获取DataFrame,不用绕弯。

正确的转换方法

1. 获取核心差异分析结果表

DeseqStats对象自带results_df属性,直接就能拿到标准的差异分析结果DataFrame,包含baseMean、log2FoldChange、pvalue、padj等所有关键列:

results_df = stat_res.results_df

2. 生成汇总统计表格(类似R中summary()的输出)

如果需要上调/下调基因数这类汇总信息,无需依赖不存在的tables属性,直接基于results_df计算即可:

# 自定义筛选阈值(可根据需求调整)
padj_threshold = 0.05
l2fc_threshold = 1

# 计算各类基因数量
up_count = len(results_df[(results_df['padj'] < padj_threshold) & (results_df['log2FoldChange'] > l2fc_threshold)])
down_count = len(results_df[(results_df['padj'] < padj_threshold) & (results_df['log2FoldChange'] < -l2fc_threshold)])
total_tested = len(results_df)

# 组装成汇总DataFrame
summary_df = pd.DataFrame({
    '上调基因数': [up_count],
    '下调基因数': [down_count],
    '总测试基因数': [total_tested]
})

为什么之前的代码会报错

你用的HTML转换逻辑是R语言中处理DESeq2结果的方式,但PyDESeq2的API设计和R版本完全不同,DeseqStats对象并没有tables这个属性,因此触发了AttributeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:32:08