2016-07-29 10 views
2

I Zeilen aus Spalte feccandid extrahieren möchten, die ein H oder S als erster Wert haben:Pandas: select Reihen von Spalten mit Regex

cid  amount date catcode  feccandid 
0 N00031317 1000 2010 B2000 H0FL19080 
1 N00027464 5000 2009 B1000 H6IA01098 
2 N00024875 1000 2009 A5200 S2IL08088 
3 N00030957 2000 2010 J2200 S0TN04195 
4 N00026591 1000 2009 F3300 S4KY06072 
5 N00031317 1000 2010 B2000 P0FL19080 
6 N00027464 5000 2009 B1000 P6IA01098 
7 N00024875 1000 2009 A5200 S2IL08088 
8 N00030957 2000 2010 J2200 H0TN04195 
9 N00026591 1000 2009 F3300 H4KY06072 

ich diesen Code verwende:

campaign_contributions.loc[campaign_contributions['feccandid'].astype(str).str.extractall(r'^(?:S|H)')] 

Fehler: ValueError: pattern contains no capture groups

Hat jemand mit Erfahrung mit Regex wissen, was ich falsch mache?

Antwort

2

Für etwas dieses einfache, können Sie die regex umgehen:

relevant = campaign_contributions.feccandid.str.startswith('H') | \ 
    campaign_contributions.feccandid.str.startswith('S') 
campaign_contributions[relevant] 

Wenn Sie jedoch einen regulären Ausdruck verwenden möchten, können Sie dies

relevant = ~campaign_contributions['feccandid'].str.extract(r'^(S|H)').isnull() 

Hinweis

ändern, dass die astype überflüssig und das extract ist genug.

Verwandte Themen