2017-12-18 6 views
-3

"タイトル"と "説明"という2つの列を持つデータフレームがあります。タイトル欄には、臨床検査のテストに関するタイトルがたくさんあります。残念ながら、ほとんどのタイトルは同じテストが繰り返されますが、タイトルのマイナーチェンジによってタイトルは一意になります。文字列を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 

前:

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に新しく、テキストデータを扱っているので、 "blood"という単語を検索することしかできませんでした。

+0

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

+0

あなたの例では、「平均血糖(abg)」は常に文字列全体ですか?または、最初または最後に保管したいテキストが他にもありますか? –

+0

'str.replace()'を使ってみましたか?そうでない場合はまずそれを試してください。 – furas

答えて

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'} 
関連する問題