2016-06-30 7 views
1

Pandas str.contains() wo ausgewertet zu True in der Weise unten die Zeile zurückgibt. Aber wie gibt man das Spiel statt der Reihe zurück?pandas str enthalten, um Übereinstimmung zu liefern

In [1]: df 

language   level 
java programming beginner 
c/c++    intermediate 
php    beginner 

In [2]: df[df['language'].str.contains("java|php|python")==True] 

language   level 
java programming beginner 
php    beginner 

In [3]: #but should return match too instead of row: 
language   level  matched_skill 
java programming beginner java 
php    beginner php 

In [4]: df[['matched_skill']] 

java 
php 
+1

Dies ist fast sicher nicht notwendig: '== true'. – IanS

Antwort

2

können Sie str.extract verwenden und dann Zeilen entfernen mit NaN von dropna:

df['matched_skill'] = df['language'].str.extract("(java|php|python)", expand=False) 
print (df) 
      language   level matched_skill 
0 java programming  beginner   java 
1    c/c++ intermediate   NaN 
2    php  beginner   php 

df.dropna(subset=['matched_skill'], inplace=True) 
print (df) 
      language  level matched_skill 
0 java programming beginner   java 
2    php beginner   php 
Verwandte Themen