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

Python中如何按字符串特征统计相对丰度总和?

字符串特征匹配与丰度统计实现方案

需求说明

给定包含字符串和对应相对丰度的表格,以及一组特征字符串,需要检查每个字符串是否包含特征,并统计每个特征对应的丰度总和。

示例输入

  • 字符串丰度表格:
+────────────+────────────+
| String     | Abundance  |
+────────────+────────────+
| abcdef     | 12         |
| cdefgh     | 15         |
| fghijk     | 36         |
| jklmnoabc  | 37         |
+────────────+────────────+
  • 特征列表:cdef, abc, jk

实现方法

方法一:使用Pandas(适合处理大规模表格)

Pandas是Python中处理表格数据的常用库,代码简洁高效:

import pandas as pd

# 1. 定义输入数据
data = {
    'String': ['abcdef', 'cdefgh', 'fghijk', 'jklmnoabc'],
    'Abundance': [12, 15, 36, 37]
}
df = pd.DataFrame(data)
features = ['cdef', 'abc', 'jk']

# 2. 统计每个特征的丰度总和
result = {}
for feature in features:
    # 筛选包含当前特征的字符串,求和对应丰度
    total = df[df['String'].str.contains(feature)]['Abundance'].sum()
    result[feature] = total

# 3. 整理成结果表格并输出
result_df = pd.DataFrame(list(result.items()), columns=['Feature', 'Abundance (%)'])
print(result_df.to_string(index=False))

运行后输出:

Feature  Abundance (%)
  cdef              27
   abc              59
    jk              73

方法二:基础Python实现(适合小数据量)

如果不需要依赖第三方库,用基础Python也能完成:

# 1. 定义输入数据
string_list = ['abcdef', 'cdefgh', 'fghijk', 'jklmnoabc']
abundance_list = [12, 15, 36, 37]
features = ['cdef', 'abc', 'jk']

# 2. 初始化结果字典
feature_total = {feat: 0 for feat in features}

# 3. 遍历字符串和丰度,匹配特征并累加
for s, ab in zip(string_list, abundance_list):
    for feat in features:
        if feat in s:
            feature_total[feat] += ab

# 4. 格式化输出表格
print("+──────────+────────────────+")
print("| Feature  | Abundance (%)  |")
print("+──────────+────────────────+")
for feat, total in feature_total.items():
    # 格式化字符串保证对齐
    print(f"| {feat:<8} | {total:<16} |")
print("+──────────+────────────────+")

运行后输出和示例完全一致:

+──────────+────────────────+
| Feature  | Abundance (%)  |
+──────────+────────────────+
| cdef     | 27             |
| abc      | 59             |
| jk       | 73             |
+──────────+────────────────+

关键逻辑说明

  • 核心是检查每个字符串是否包含目标特征:Python中可以用in关键字(基础写法)或Pandas的str.contains()方法(表格写法)实现匹配。
  • 匹配成功后,将对应字符串的丰度累加到特征的总丰度中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:20:25