2017-12-18 1 views
-3

Ich habe einen Datenrahmen, der zwei Spalten hat, "Titel" und "Beschreibung". Die Titelspalte enthält eine Reihe von Titeln zu klinischen Labortests. Leider sind die meisten Titel Wiederholung des gleichen Tests, aber aufgrund geringfügiger Änderungen in den Titeln werden Titel als einzigartig angezeigt.Ersetzen einer Zeichenfolge vollständig mit einer neuen Zeichenfolge oder einem neuen Wort in Python

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 

Bevor:

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

Nach: [Das ist, wie ich den Datenrahmen aussehen möchte]

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

Ich möchte für das Wort "Blut" suchen, in jedem Titel und wenn es wahr ist, dann ändere den ganzen Titel mit "Bluttest".

P.S Ich bin neu in Python und arbeite mit Textdaten, ich habe es nur geschafft, bis zur Suche nach dem Wort "Blut" zu kommen. Diese

+0

@furas, typo -> str.replace() –

+0

In Ihrem Beispiel ist "durchschnittliche Blutzucker (abg)" immer die gesamte Zeichenfolge? Oder könnte es einen anderen Text am Anfang oder am Ende geben, den du behalten möchtest? –

+0

haben Sie versucht, 'str.replace()' zu verwenden? wenn nicht, dann versuch es zuerst. – furas

Antwort

1

ist keine exakte Lösung, weil ich nicht weiß, Format Ihrer Daten, ich bin einfach geben ein Beispiel mit txt-Datei, können Sie Hilfe von diesem Code nehmen:

Wenn datei.txt enthält:

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

Code:

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. 

Ausgang:

{('ABO', 'group'): 'Blood test'} 
Verwandte Themen