基于字典映射创建并修改DataFrame的'ans'列技术需求
DataFrame新列'ans'的三步创建与修改
需要分三步完成DataFrame新列'ans'的创建与修改:
- 第一步:将字典中的词汇映射到'text'列生成'ans'列。注意:若字典中的对应值是多词短语,需将对应的键重复短语的词数次数。
- 第二步:把'text'列中不在字典内的内容,在'ans'列中替换为'O'。
- 第三步:调整'ans'列的标记:如果当前元素的前一个元素不是'O',则将当前元素中的'B-'替换为'I-'。例如序列
O O O B-name B-name需要修改为O O O B-name I-name。
代码示例
import pandas as pd # 创建映射字典 dict_1 = { 'B-name' : ['Ankit', 'Aishwarya', 'Shaurya', 'Shivangi'], 'B-acc' : ['bank account', 'Account number', 'bank acc num'] } # 创建初始DataFrame data = ['Ankit has a bank account in HSBC.', 'shivangi forgot her bank acc num', 'Aishwarya met shaurya'] df = pd.DataFrame(data, columns=['text'])
期望最终结果
# 最终的DataFrame结构 data = (['Ankit has a bank account in HSBC.', 'B-name O O B-acc I-acc O O'], ['shivangi forgot her bank acc num', 'B-name O O B-acc I-acc I-acc'], ['Aishwarya met shaurya','B-name O B-name']) df = pd.DataFrame(data, columns=['text','ans']) print(df)
运行后输出:
text ans 0 Ankit has a bank account in HSBC. B-name O O B-acc I-acc O O 1 shivangi forgot her bank acc num B-name O O B-acc I-acc I-acc 2 Aishwarya met shaurya B-name O B-name
内容的提问来源于stack exchange,提问作者soumya sharma
相关产品推荐
相关产品推荐

