string拆分在单个string上工作,但不是在pandas系列的string
我对Python和大pandas很新,有一个问题。 我有一系列需要编辑的45398个string。 我从一个Excel文件导入他们。
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
在第四列中,文字前面有一堆数字,我想在整个系列中删除它们。
我用单个string进行testing,它可以正常工作:
>>> str("15.0200 CO-Diffusion, jede Methode".split(' ', 1)[1:]).strip('[]')` "'CO-Diffusion, jede Methode'"
我试图把这个应用到整个系列中:
for entry in df.Leistung: df.Leistung.replace({entry : str(entry.split(' ', 1)[1:]).strip('[]')}, inplace=True)
df.Leistung的结果应该是这样的:
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
一行给出这个:
45384 'Dos\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'"\\\\\\\\\...
我需要用同一列中的新系列更新旧系列。 我希望这是可以理解的,并提前感谢您发布任何帮助。
pandas不需要循环,它们都是vector化的。 您以后的replacefunction属于.str.
命名空间。 所以你需要做的::
df.Leistung.str.replace(r'\d+', '')