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

如何从DataFrame复合名称字符串中拆分结构名、剂量与体积?

解决方案

问题核心是原代码按固定位置拆分字符串,无法适配多词结构名。正确思路是从字符串末尾提取最后两个元素作为dose和volume,前面所有元素合并为结构名,以下是两种可行方法:

方法1:使用str.rsplit(推荐,更简洁)

利用rsplit从右侧指定分割次数,直接拆分出目标列:

# 从右侧分割2次,拆分出三列
df[['structure_name', 'dose', 'volume']] = df['structure'].str.rsplit(n=2, expand=True)

# 可选:将dose和volume转换为数值类型
df['dose'] = pd.to_numeric(df['dose'])
df['volume'] = pd.to_numeric(df['volume'])

rsplit(n=2)会把字符串从右往左拆成3部分:前面所有连续非空格内容作为第一部分,最后两个独立元素分别作为第二、第三部分,完美适配多词结构名。

方法2:自定义函数拆分

如果需要更灵活的逻辑,可用apply配合自定义函数处理每个字符串:

import pandas as pd

def parse_structure(s):
    parts = s.split()
    # 取最后两个元素作为dose和volume,前面的合并为结构名
    structure = ' '.join(parts[:-2])
    dose = parts[-2]
    volume = parts[-1]
    return pd.Series([structure, dose, volume])

# 应用函数并拆分到新列
df[['structure_name', 'dose', 'volume']] = df['structure'].apply(parse_structure)

# 转换数值类型
df['dose'] = pd.to_numeric(df['dose'])
df['volume'] = pd.to_numeric(df['volume'])

处理后的数据示例:

structure_namedosevolume
CEREBRO0.00.0
CEREBRO10.0100.0
TRONCO0.00.0
TRONCO5.0100
OLHO DIR0.00.0
OLHO DIR8.0100.0

内容的提问来源于stack exchange,提问作者Gustavo Morlin Moretto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:18:09