2016-08-14 2 views
0

Мне нужно фильтровать строки, содержащие шаблон строки, из индекса данных DataSphere Pandas.Фильтрация строк, содержащих шаблон строки из индекса данных DataSphere Pandas

Я нашел следующий пример: How to filter rows containing a string pattern from a Pandas dataframe где dataframe фильтруется с помощью df [df ["col"]. Str.contains()], который отлично работает с примером.

df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': [u'aball', u'bball', u'cnut', u'fball']}) 

В примере, если я скопировать столбец «иды» в индекс, я могу использовать df.index.str.contains («шар»), который также работает отлично.

Однако, когда я использую df.index.str.contains («Пример») в своем фреймворке данных, он не работает.

Я думаю, что это не сработало, потому что в моей DataFrame возвращаемое значение не является array([ True, False ... , True], dtype=bool), а Index([True, False ... , True], dtype='object', length = 667).

Как я могу переформулировать мой код, чтобы он работал?

Я не вставляю свой dataframe, потому что я читаю его с большого листа excel.

Спасибо!

+0

Это может стать 'Index ([True, False ..., True], DTYPE = 'объект', длина = 667)', если вы назначаете 'df.index = df.index.str.contains ('мяч') '. Вам не нужно это делать. 'df [df.index.str.contains ('ball')]' работает отлично. – ayhan

ответ

0

Вы должны убедиться, что ваш индекс является строкой. Пример ниже приводит к ошибке.

# Test data 
df = DataFrame([1,2,3,4], index=['foo', 'foo1', 'foo2', 1], columns=['value']) 
df[df.index.str.contains('foo')] 

Преобразование индекса str разрешений для получения ожидаемого результата.

df.index = df.index.astype('str') 
df[df.index.str.contains('foo')] 

     value 
foo  1 
foo1  2 
foo2  3 
Смежные вопросы