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

Pandas如何提取列名中.s__后的内容重命名DataFrame列

pandas提取列名指定后缀重命名实现

问题场景

现有如下结构的pandas DataFrame,列名是按分类层级拼接的微生物分类字符串:

import pandas as pd

data = pd.DataFrame({
    "k__Bacteria.p__Proteobacteria.c__Gammaproteobacteria.o__Aeromonadales.f__Aeromonadaceae.g__Aeromonas.s__Aeromonas_dhakensis": [123, 1234, 543, 2133],
    "k__Bacteria.p__Firmicutes.c__Clostridia.o__Clostridiales.f__Lachnospiraceae.g__Faecalicatena.s__Faecalicatena_orotica": [543, 324, 234, 652]
})

单条列名格式示例:

k__Bacteria.p__Proteobacteria.c__Gammaproteobacteria.o__Aeromonadales.f__Aeromonadaceae.g__Aeromonas.s__Aeromonas_dhakensis

需求为提取每个列名中.s__之后的字符串作为新列名,完成列重命名操作。

实现方法

直接对列名做字符串分割即可,一行代码就能完成重命名:

# 方法1:列表推导式写法,执行效率更高
data.columns = [col.split(".s__")[-1] for col in data.columns]

如果偏好pandas原生的字符串向量化操作,也可以使用下面的写法,最终效果完全一致:

# 方法2:pandas str向量化写法
data.columns = data.columns.str.split(".s__").str[-1]

效果验证

执行重命名后,输出data.columns可以看到新列名如下:

Index(['Aeromonas_dhakensis', 'Faecalicatena_orotica'], dtype='object')

注:这类微生物分类名的格式固定,.s__标记仅会在列名末尾对应物种层级的位置出现一次,取分割结果的最后一段不会出现匹配错误的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:48:15