2017-06-23 4 views
2

Ich habe ein Dataframe als df und Spalte als Column1 Wenn der column1 Wert nicht anwendbar ist, geben Sie False zurück, oder überprüfen Sie, ob die ersten 2 Zeichen des Elements in der Spalte alphabetisch sein sollen Rückgabe Richtig oder FalschRegex, Erste Zwei Zeichen als Alphabetische Python

Wie überprüft man die ersten beiden Zeichen alphabetisch im sonst Teil der Lambda-Funktion?

+0

Können Sie ein Beispiel mit der gewünschten Ausgabe hinzufügen? – jezrael

+0

Ich sehe hier keine Frage. – revo

+0

@VigneshwaranMarkandan er überprüfen möchten, ob die ersten beiden Zeichen von x in der sonst der Anwendung sind alphabetisch – Tbaki

Antwort

4

Diese Lösung keine regex muss. Wenn Sie überprüfen möchten, dass diese 2 Buchstaben Alphabete sind, verwenden Sie die Funktion str.isalpha().

df['Column1'].apply(lambda x : False if x in ['Not Applicable'] else x[0:2].isalpha()) 

Bei OP Wunsch mit re.match:

import re 
df['Column1'].apply(lambda x : False if x in ['Not Applicable'] else re.match('[a-z]{2}', x[0:2].lower())) 

re.match gibt ein Match-Objekt, wenn es eine Übereinstimmung gibt, wird sonst None zurückkehren, so dass Sie die Truthiness des Rückgabewert verwenden können .

+0

Wie kann ich tun, wenn ich Regex Inside verwenden möchte –

+0

@Shivpe_R bearbeitet. –

2

Ich glaube, Sie brauchen numpy.where mit str.isalpha und indexing with str:

df = pd.DataFrame({'col1':['Not Applicable dds','*7df Not Applicable','sd ds', '#@(444']}) 

df['a'] = np.where(df['col1'].str.contains('Not Applicable'), False, 
        df['col1'].str[:2].str.isalpha()) 
print (df) 
        col1  a 
0 Not Applicable dds False 
1 *7df Not Applicable False 
2    sd ds True 
3    #@(444 False 
Verwandte Themen