2013-06-30 2 views
2

Это может быть простой вопрос, но не мог понять, как это выполнить. У меня есть рамка данных pandas со следующими столбцами.print boolean Истинные результаты регулярного выражения match-Pandas Dataframe

df.columns = ['IP', 'Time', 'Method', 'Resource', 'Status', 'Bytes', 'Referrer', 'Agent'] 

Я хочу выполнить некоторое регулярное выражение для столбца df ['Resource']. Я сделал это плавным путем.

df.Resource.str.contains('pdf') 

Тогда мне нужно напечатать только 'True' результаты с ФР [ 'IP'], DF [ 'Время'], и ДФ [ 'Ресурс']. Как это сделать?

ответ

2

Мы должны использовать na = false, так что отсутствующие значения можно считать True или False в соответствии с pandas-docs. Это отлично работает.

print df[df.Resource.str.contains('pdf',na=False)][['IP', 'Time', 'Resource']][0:5] 
0

Если я понимаю, это должно сработать.

df[df.Resource.str.contains('pdf')][['IP', 'Time', 'Resource']] 

В основном, он использует маску, чтобы ограничить строки в df только те, которые возвращают True, то это только дает вам столбцы: IP, Time, Resource.

+0

Он дает «ValueError: не может индексировать вектор, содержащий значения NA/NaN». Я пробовал с fillna (0)? Дается одна и та же ошибка. Есть ли у вас какие-либо идеи? –

+0

В вашем ответе, как мы чистим «истинные» значения? –

+1

'df.Resource.str.contains ('pdf')' возвращает логическое значение, основанное на том, что строка содержит ''pdf''. – tshauck