如何通过字符匹配从DataFrame中提取日文药品名和对应剂量?
实现步骤
你可以结合pandas的字符串处理和正则匹配实现需求,完全符合你提到的匹配字母F和字符「注」的拆分逻辑:
完整代码实现
import pandas as pd import re # 全角数字转半角辅助函数,处理日文全角数字问题 def zenkaku_to_hankaku(s): return s.translate(str.maketrans('0123456789', '0123456789')) # 构造测试数据,你可以替换成你自己的DataFrame读取逻辑 df = pd.DataFrame({ 'Drug name': [ 'コージネイトFSバイオセット注250 250国際単位', 'アドベイト注射用500 500単位' ] }) # 提取纯净药品名:取字符串开头到第一个「F」或「注」之前的内容,去除首尾空白 df['Drug_clean'] = df['Drug name'].str.extract(r'^([^F注]+)')[0].str.strip() # 提取剂量:先转全角数字为半角,再提取第一个连续数字,转为整数格式 df['Volume'] = df['Drug name'].apply(zenkaku_to_hankaku).str.extract(r'(\d+)')[0].astype(int)
逻辑说明
- 药品名提取正则
^([^F注]+):^限定从字符串开头匹配,[^F注]+匹配所有非「F」、非「注」的字符,遇到第一个目标终止符就停止,刚好拆分出前面的药品通用名部分。 - 剂量提取优先转换全角数字为半角,再取第一个出现的连续数字,避免了后面重复标注的剂量干扰,匹配你需要的结果。
运行后输出的Drug_clean和Volume列和你给出的预期效果完全一致。
内容的提问来源于stack exchange,提问作者N Kevin
相关产品推荐
相关产品推荐

