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

pandas如何排除ENSG列执行列值除以列总和计算,能否使用iloc?

解决方法

完全可以通过iloc实现,也可以按列名筛选要处理的列,两种常用写法如下:

方法1:按列名排除ENSG列(更稳定,不受列顺序变化影响)

直接筛选出除ENSG外的所有列执行计算,再赋值回原表对应位置:

df[df.columns.drop('ENSG')] = df[df.columns.drop('ENSG')].transform(lambda x: x / x.sum())

如果不想修改原DataFrame,可以单独拼接生成新表:

import pandas as pd
new_df = pd.concat([
    df['ENSG'],
    df[df.columns.drop('ENSG')].transform(lambda x: x / x.sum())
], axis=1)

方法2:用iloc实现(适合列顺序固定的场景)

如果你的表结构固定,ENSG是第一列、后面全为需要计算的表达量列,可以直接按索引范围选列:

# iloc[:, 1:] 表示选择所有行,第2列到最后一列(索引从0开始计数,0对应ENSG列)
df.iloc[:, 1:] = df.iloc[:, 1:].transform(lambda x: x / x.sum())

补充说明

pandas的transform方法默认会作用于选中的所有列,你只需要提前把不需要计算的ENSG列排除在选择范围外,就不会对它做修改,无需调整transform内部的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:54:02