用python中的新字符串或单词完全替换字符串

问题描述 投票:-3回答:1

我有一个数据框,有两列,“标题”和“描述”。标题栏有一堆与临床实验室测试相关的标题。不幸的是,大多数标题都重复相同的测试,但由于标题的微小变化,标题显示为独特。

values = [('Complete blood picture', 'AB'), ('Complete BLOOD test', 'AB'), ('blood glucose', 'AB'), ('COMplete blood Profile', 'AB')]
labels = ['title', 'description']
import pandas as pd
labtest = pd.DataFrame.from_records(values, columns = labels) # Create data frame
labtest = labtest.apply(lambda x: x.astype(str).str.lower())  # Convert columns to string and lower case
labtest['title'].str.contains("blood")  # Search for blood

之前:

Title                       Description
Complete blood test         AB
COMPLETE Blood test\        AB
Blood glucose               AB
Complete blood picture      AB

之后:[这就是我希望数据框看起来像]

Title                       Description
Blood test                   AB
Blood test                   AB
Blood test                   AB
Blood test                   AB

我想在每个标题中搜索“血”这个词,如果是真的,那么用“血液测试”改变整个标题。

P.S我是python的新手并使用文本数据,我只能设法找到“血”这个词。

python string text
1个回答
1
投票

这不是一个确切的解决方案,因为我不知道你的数据格式,我只是给你一个txt文件的例子,你可以从这段代码中获取帮助:

如果file.txt包含:

Title                       Description
Complete blood test         ABO group
COMPLETE Blood test\        ABO group
Blood glucose               ABO group
Complete blood picture      ABO group

码:

track_dublicate={}
with open('file.txt') as f:

    for line_no,line in enumerate(f):
        if line_no==0:
            pass
        else:
            if tuple(line.split()[-2:]) not in track_dublicate:
                track_dublicate[tuple(line.split()[-2:])]=line.split()[:-2]
            else:
                track_dublicate[tuple(line.split()[-2:])]='Blood test'

print(track_dublicate)
#you can save this data to a new file where you want.

输出:

{('ABO', 'group'): 'Blood test'}
© www.soinside.com 2019 - 2024. All rights reserved.