2013-07-31 29 views
23

koyulur.onay pandalar dataframe sütunda dize listesinde

frame['b'] = frame.a.str.contains("dog") | frame.a.str.contains("cat") | frame.a.str.contains("fish") 

frame['b'] çıkışlar:

True 
False 
True 

Ben

mylist =['dog', 'cat', 'fish'] 

nasıl satırları listesinde belirli bir kelimeyi içeren kontrol edecek bir liste yapmaya karar verirseniz?

cevap

45

str.contains yöntem Normal ifade deseni kabul eder: listesi için

In [11]: pattern = '|'.join(mylist) 

In [12]: pattern 
Out[12]: 'dog|cat|fish' 

In [13]: frame.a.str.contains(pattern) 
Out[13]: 
0  True 
1 False 
2  True 
Name: a, dtype: bool 
+0

çalışmalıdır. True False yerine eşleştirilen alt deseni (demek, * dog *) döndürmenin herhangi bir yolu var mı? – zelusp

+1

Şekilde gösterildi: eşleştirilen desen kullanımını döndürmek için 'frame.a.str.extract (pattern)' – zelusp