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

如何将scRNA-seq的pandas DataFrame转换为二进制DataFrame?

将scRNA-seq表达矩阵转换为二进制矩阵的方法

你用pd.get_dummies(df)没效果是因为这个函数的用途不对——它是用来给分类变量做独热编码的,比如把带有类别标签的列拆成多个二进制列,完全不适合处理数值型的表达矩阵二值化。下面是几种可行的转换方法:

方法1:用Pandas内置方法直接处理

利用ne()(判断是否不等于0)结合astype(int)把布尔值转成0/1,代码简洁高效:

binary_df = df.ne(0).astype(int)

方法2:用NumPy的条件判断

如果需要更直观的条件逻辑,可以用np.where:

import numpy as np
binary_df = pd.DataFrame(
    np.where(df != 0, 1, 0),
    index=df.index,
    columns=df.columns
)

方法3:直接在AnnData层面处理(更适合大矩阵)

因为你的数据来自AnnData,而AnnData的X可能是稀疏矩阵(scRNA-seq数据常用存储格式),直接在AnnData上处理会更高效:

# 直接转换AnnData的表达矩阵
adata1.X = (adata1.X != 0).astype(int)
# 再转成DataFrame
binary_df = adata1.to_df()

验证结果

你可以取前几行数据验证转换是否正确:

print(binary_df.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:12:48