2017-02-22 11 views
0

Ich versuche, zwei .csv-Dateien zu vergleichen. Die erste hat eine Reihe von Attributen, die absichtlich in verschiedene Spalten unterteilt sind. Die zweite CSV hat alle diese Attribute in einer einzigen Zelle kombiniert. Ich möchte eine bestimmte Anzahl von Übereinstimmungen finden und nach der Bestätigung Daten von einer anderen Zelle (einer Bild-ID) in der zweiten CSV-Datei abrufen.Pandas, die mit .extract() übereinstimmen

Ich benutze Pandas (neu dazu) und denke bis jetzt Extrakt/extractall ist, wo ich sein will. Aber in diesem Basistest kann ich nicht sehen, warum ich keine Matches bekomme.

image_index = pd.Series(['Classic', 'Duffle', 'Bag', 'Leather']) 
image_index.str.extract('(?P<duffle>(?i)Duffle)(?P<bag>(?i)Bag)', expand=False) 

Ergebnis:

duffle bag 
0 NaN NaN 
1 NaN NaN 
2 NaN NaN 
3 NaN NaN 

Antwort

0

Sie benötigen einen Wechsel | zwischen den Gruppen, da Sie nur jede Gruppe Muster in einen String haben:

>>> image_index.str.extract('(?P<duffle>(?i)Duffle)|(?P<bag>(?i)Bag)', expand=False) 
    duffle bag 
0  NaN NaN 
1 Duffle NaN 
2  NaN Bag 
3  NaN NaN 
+0

Warum ist das in den Beispielen nicht erforderlich gegeben in den Dokumenten? Ich sehe das in keinem von ihnen. http://pandas.pydata.org/pandas-docs/stable/text.html – thaneofcawdor

+0

In den Beispielen im Dokument enthält die Zeichenfolge Übereinstimmungen von beiden Gruppen, aber das ist hier nicht der Fall. Wenn du in der Serie "DuffleBag" hattest, wird deine erste Regex eine Übereinstimmung finden. –

Verwandte Themen