2017-01-17 10 views
1

Пытаясь отфильтровать строки в моих данных, мне нужно сопоставить первую букву N, за которой следует число, а затем отбросить строки, которые не соответствуют этим критериям.python pandas row startswith one letter one number wildcard

Я пытался несколько регулярных выражений комбинации из StackOverflow, но они, кажется, не правильно

new = new.loc[new['call_x'].str.startswith("^[N]{1}[0-9]+")] 

Example data 
N902AG #keep 
N917GA #keep 
N918PD #keep 
N919PD #keep 
N930EN #keep 
N940CL #keep 
N976TR #keep 
N98AW #keep 
NAX6700 #drop 
NAX7019 #drop 
NKS1028 #drop 
NKS171 #drop 
NKS174 #drop 
NKS197 #drop 
+1

Я не думаю, что 'str.startswith' принимает регулярное выражение. Вместо этого вы должны использовать пакет 're': https://docs.python.org/2/library/re.html – BloodyD

+0

Похоже, вы используете панды. Добавление тега 'pandas' действительно имеет значение. – gzc

+0

@gzc спасибо gzc, надзор с моей стороны, это было добавлено – sn4ke

ответ

1

работы Используйте pandas.Series.str.contains, чтобы соответствовать регулярному выражению.

df = df.loc[df['a'].str.contains('^N[0-9]+')] 
0

Попробуйте это:

df[df.Example.str.match('^N\d+')] 
+0

Хотя этот фрагмент кода может ответить на вопрос, лучше включить описание проблемы, и как ваш код справится с данной проблемой. Для будущего, вот некоторая информация, [как взломать удивительный ответ] (http://stackoverflow.com/help/how-to-answer) в Stack Overflow. – dirtydanee

 Смежные вопросы

  • Нет связанных вопросов^_^