Ich habe eine Funktion definiert, die die Aufgabe ausführt, die ich will, aber es ist schrecklich langsam. Für ein DataFrame (df1=pd.read(file1))
mit Kopf 'raw_data'
ich zur Zeit durchläuft jede Saite mit .iterows
und jeden Eintrag auf eine Funktion, und dann str.replace(row['replacethis'],row['withthis'])
verwendet, die Streifen und absenkt schicken, wo 'replacethis'
und 'withthis'
sind Spalten in einer zweiten DataFrame ((df2=pd.read(file2))
.Ersetzen von Datenrahmeneinträgen durch einen anderen Datenrahmeneintrag (Serie?)? vektorisieren? Kompression?
Dies ist jedoch extrem langsam, es dauert ein paar Tage für eine sehr große Anzahl von Elementen von file1/file2. Ich habe mehrere Stunden/Tage nach Lösungen suchen, und ich habe mit etwas ohne Erfolg series.str.replace
mit Liste Kompression versucht, mit wie:
'raw_data'=[[x['raw_data'].replace(y['replacethis'],y['withthis']) for y in df2.iterrows()] for x in df1.iterrows()]
Kann jemand eine Anleitung oder beraten? Das macht mich verrückt.
nach dem Strippen und unteren Gehäuse macht die Zeichenfolge genau übereinstimmen 'replacethis' oder ist es nur enthalten' den String-Inhalt ersetzen? – EdChum
für eine Version der Funktion ist eine exakte Übereinstimmung (ich verwende wenn str == row ['raw_data'] in der Funktion), und für einige ist es ein Teilstring ... – PythonNoob123
Nun für den Teilstring Teil erwarten Sie 1 oder mehr als 1 Übereinstimmung und auch für die genaue Übereinstimmung? Für die genauen Übereinstimmungen könntest du einfach auf diese Spalten "fusionieren", für das andere Bit glaube ich nicht, dass du viel mehr tun kannst, als "str.contains" oder ähnliches zu durchlaufen und zu verwenden. – EdChum