Ich versuche, 6-stellige Zahlen in Texten eingebettet zu extrahieren. Die Zahlen beginnen immer mit einer Null, sind immer 6 Ziffern durch eine Periode nach der 4. Stelle getrennt lang, etwa so:regex findall für Zahlen
0 0133.02[text] in location [texttext](text) numbers 1 0121.08[text] in location [texttext](text) numbers ...
Ich betreibe die folgenden:
import re filtered = re.findall("0\d\d\d[.]\d\d", str(df['col']))
Es gibt 478 zu analysierende Zeilen, und jede Zeile enthält die genannte Nummer. Allerdings gibt das filtered
Ergebnis immer nur 60 aus, auch wenn ich das Regex-Format ändere. Interessanterweise scheint filtered
hauptsächlich aus Zahlen der ersten und letzten Reihen der 478 Reihen zusammengesetzt zu sein, aber nicht aus der Mitte?
EDIT: Ich extrahierte die Zeilen, die funktionieren vs nicht funktionieren, und festgestellt, dass diejenigen, die funktionieren, sind die ersten & letzten 30 Zeilen (0-29, 448-477).
Hier ist eine Probe der Zeilen, die nicht funktionieren (446, 447): 446 0005.00 [CT] in Vancouver [CMA] (B.C.) 44160 447 0170.05 [CT] in Vancouver [CMA] (B.C.) 44006
Und eine Probe der Zeilen, die funktionieren (448, 449): 448 0050.04 [CT] in Vancouver [CMA] (B.C.) 43995 449 0067.01 [CT] in Vancouver [CMA] (B.C.) 43989
Schwer zu sehen, was falsch ist, ohne zu sehen die Daten. Deine Regex sollte funktionieren. – L3viathan
Ist Ihre Frage zu diesem Thema? https://stackoverflow.com/questions/15325182/how-to-filter-rows-in-pandas-by-regex – Mehdi
versuchen Sie "\ d + \.? \ d *" und sehen Sie die Anzahl der Ergebnisse. Möglicherweise stimmen einige Ihrer Elemente nicht mit Ihrem erwarteten Format überein. –