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

如何修正Pandas实体提取代码:处理无分隔符字符串场景

Pandas字段赋值逻辑修正

原始代码与问题

原始代码意图实现:当Alias等于AAA时,取att字段按.拆分后的第一个元素赋值给ent,否则保留原ent值,但存在逻辑漏洞:

import pandas as pd
import numpy as np
df = pd.DataFrame({'Alias': ['AAA', 'AAA','TTTTTT', 'GGG'],
                         'att': ['LG.ident', 'Date','TTTTTT.DDD', 'attribute_test'],                                      
                        'ent': ['AAA', 'AAA','TTTTTT', 'GGG'],
                        'id': ['1', '2','3', '4']})
df['ent'] = np.where((df.Alias == 'AAA'),df['att'].str.split('.').str[0].fillna(df['Alias']),df.ent)

问题点:当att字段不含.(如第二行的Date)时,str.split('.').str[0]会返回att的原始值(Date),而非预期的AAA,导致ent赋值错误。

预期输出

Aliasattentid
0AAALG.identLG1
1AAADateAAA2
2TTTTTTTTTTTT.DDDTTTTTT3
3GGGattribute_testGGG4

修正代码

import pandas as pd
import numpy as np
df = pd.DataFrame({'Alias': ['AAA', 'AAA','TTTTTT', 'GGG'],
                         'att': ['LG.ident', 'Date','TTTTTT.DDD', 'attribute_test'],                                      
                        'ent': ['AAA', 'AAA','TTTTTT', 'GGG'],
                        'id': ['1', '2','3', '4']})
# 修正逻辑:先判断Alias是否为AAA,再判断att是否含分隔符
df['ent'] = np.where(
    df.Alias == 'AAA',
    np.where(df.att.str.contains('\.'), df.att.str.split('.').str[0], df.Alias),
    df.ent
)

逻辑说明

  • 外层np.where判断Alias是否为AAA,满足条件则进入内层判断,否则直接保留原ent值
  • 内层np.where检查att是否包含.:
    • 包含则取拆分后的第一个元素赋值给ent
    • 不包含则直接使用Alias的原值(即AAA)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:52:32