2016-10-17 14 views
3

パンダバージョン0.19.0を使用して、コンパイル済みの正規表現を含むデータフレームを内部に持っています。私は、データフレームをループして、正規表現のどれかが値と一致するかどうかを確認したい。私は2つのforループでそれを行うことができますが、同じサイズのデータ​​フレームを返すようにする方法を理解することはできません。Dataframe 'Series'オブジェクトのPythonループには属性がありません

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") 

これは失敗します。

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

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

を私が欲しいもの:

[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 

答えて

2

あなたがapplymapメソッドを使用する必要があるように見えます。詳細については、hereのドキュメントを参照してください。

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

出力:

enter image description here

関連する問題