2016-10-17 1 views
3

Mit Pandas Version 0.19.0 habe ich einen Datenrahmen mit kompilierten regulären Ausdrücken innerhalb. Ich möchte den Datenrahmen durchlaufen und sehen, ob einer der regulären Ausdrücke mit einem Wert übereinstimmt. Ich kann es mit zwei for-Schleifen machen, aber ich kann nicht herausfinden, wie es geht, damit es einen Datenrahmen gleicher Größe zurückgibt.Python Schleife durch Datenrahmen 'Series' Objekt hat kein Attribut

import pandas as pd 
import re 

inp = [{'c1':re.compile('a'), 'c2':re.compile('b')}, {'c1':re.compile('c'),'c2':re.compile('d')}, {'c1':re.compile('e'),'c2':re.compile('f')}] 
df = pd.DataFrame(inp) 
for i,v in df.items(): 
    for a in v: 
    if (a.match('a')): 
     print("matched") 
    else: 
     print("failed") 

Dies schlägt fehl:

[a.match('a') for a in [v for i,v in df.items()]] 

AttributeError: 'Series' object has no attribute 'match'

Was ich will:

[a.match('a') for a in [v for i,v in df.items()]] 
       c1           c2 
0 <_sre.SRE_Match object; span=(0, 1), match='a'>  None 
1 None            None 
2 None            None 

Antwort

2

Es sieht aus wie Sie die applymap Methode verwenden müssen. Weitere Informationen finden Sie in der Dokumentation here.

df.applymap(lambda x: x.match('a')) 

Ausgang:

enter image description here

Verwandte Themen