2017-07-12 12 views
1

私は非常にPython &パンダには新しく問題があります。 編集する必要のある一連の45398文字列があります。私はそれらをExcelファイルからインポートしました。1つの文字列での文字列の分割は機能しますが、パンダの一連の文字列では機能しません

import pandas as pd 
import numpy as np 
import xlrd 

file_location = "#mypath/leistungen_2017.xlsx" 
workbook = xlrd.open_workbook(file_location) 
sheet = workbook.sheet_by_index(0)` 

df = pd.read_excel("leistungen_2017.xlsx") 

これは例のように最初の数行です。

>>> df 
Leistungserbringer Anzahl Leistung Code Rechnungsnummer 
0 Albert 1 15.0160 Vollständige Spirometrie und Resistanc... 1 8957 
1 Albert 1 15.0200 CO-Diffusion, jede Methode 1 8957 
2 Albert 1 15.0285 Messung ausgeatmetes Stickstoffmonoxid... 1 8957 
3 Albert 1 AMC-30864 Spirometriefilter mit Mundstück 1 8957 
4 Albert 1 5889797 RELVAR ELLIPTA Inh Plv 92mcg/22mcg 30 Dos 1 8957 
5 Albert 1 00.0010 Konsultation, erste 5 Min. (Grundkonsu... 1 8957 

第4列には、テキストの前に数字の束があり、シリーズ全体で数字を削除したいと考えています。

私は、単一の文字列で周りテストし、それがで正常に動作します:df.Leistungための結果はなるはずです

for entry in df.Leistung: 
    df.Leistung.replace({entry : str(entry.split(' ', 1)[1:]).strip('[]')}, inplace=True) 

:私はシリーズ全体にこれを適用しようとした

>>> str("15.0200 CO-Diffusion, jede Methode".split(' ', 1)[1:]).strip('[]')` 
"'CO-Diffusion, jede Methode'" 

このように:

0  Vollständige Spirometrie und Resistance (Plet... 
1        CO-Diffusion, jede Methode 
2   Messung ausgeatmetes Stickstoffmonoxid ({eNO}) 
3      Spirometriefilter mit Mundstück 
4    RELVAR ELLIPTA Inh Plv 92mcg/22mcg 30 Dos 
5   Konsultation, erste 5 Min. (Grundkonsultation) 

代わりに、私はこれを受け取ります

0               
1               
2               
3               
4               
5 

1行はこれを与える:

45384 'Dos\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'"\\\\\\\\\... 

私は同じ列の新シリーズと旧シリーズを更新する必要があります。 これはわかりやすかったと思いますが、事前に何か助けていただきありがとうございます。

+0

@stephenmussありがとうございました –

答えて

1

パンダにループは必要ありません。ベクター化されています。その後の置換機能は、.str.名前空間に該当します。だからあなたはする必要があります::

df.Leistung.str.replace(r'\d+', '') 
+0

チップありがとう、完璧に動作します! "。"それぞれの文章の始めには、しかし、病気もそれを削除します。私はあなたのコメントをupvoteしたいと思いますが、私のスコアはあまりにも低いです。 –

関連する問題