Какой самый быстрый способ выбрать строки, содержащие значение в кадре данных Pandas? - PullRequest
0 голосов
/ 02 февраля 2019

В настоящее время я следую инструкциям, изложенным здесь, для поиска значений, и это работает.Единственная проблема в том, что мой фрейм данных довольно большой (5х3500 строк), и мне нужно выполнить около 2000 поисков.Каждый из них занимает около 4 секунд, так что, очевидно, это складывается и стало немного неустойчивым с моей стороны.

Самый краткий способ выбрать строки, где любой столбец содержит строку в кадре данных Pandas?

Есть ли более быстрый способ поиска всех строк, содержащих строковое значение, чем этот?

df[df.apply(lambda r: r.str.contains('b', case=False).any(), axis=1)] 

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Одна из тривиальных возможностей - отключить регулярное выражение:

res = df[df.apply(lambda r: r.str.contains('b', case=False, regex=False).any(), axis=1)] 

Другой способ использования списка:

res = df[[any('b' in x.lower() for x in row) for row in df.values)]]
0 голосов
/ 02 февраля 2019

Вы можете проверить скорость

boolfilter=(np.char.find(df.values.ravel().astype(str),'b')!=-1).reshape(df.shape).any(1)
boolfilter
array([False,  True,  True])
newdf=df[boolfilter]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...