gpt4 book ai didi

python - 字符串分割对单个字符串有效,但对 pandas 中的一系列字符串无效

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:29 25 4
gpt4 key购买 nike

我对 python 和 pandas 非常陌生,并且有一个问题。我有一系列 45398 个字符串需要编辑。我从 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

在第四列中,文本前面有一堆数字,我想在整个系列中删除它们。

我用单个字符串进行了测试,它可以很好地工作:

>>> 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 中的循环,它都是矢量化的。您使用的替换函数属于 .str. 命名空间。所以你需要做::

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

关于python - 字符串分割对单个字符串有效,但对 pandas 中的一系列字符串无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45057260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com