нарезка кадра данных по тексту внутри текста - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть датафрейм, который выглядит следующим образом:

import pandas as pd

saf_data = {'col1': ['U1', 'U2', 'U3', 'U4'], 'col2': ['1', '2|6', '4a|6a', '6b']}

saf_df = pd.DataFrame(saf_data)

Я хочу сделать следующее

  1. сохранить все элементы в col1, которые содержат «текст» 6 in col2

Таким образом, ожидаемый результат должен содержать ['U2', 'U3', 'U4'] или быть кадром данных, который выглядит следующим образом:

 col1   col2
0   U2    2|6
1   U3  4a|6a
2   U4     6b

Может ли кто-нибудь помочь мне, как я могу сделатьтот?Пожалуйста Я ищу наиболее эффективный и общий код, потому что мой фрейм данных довольно большой.

1 Ответ

1 голос
/ 09 апреля 2019

IIUC str.contains

saf_df[saf_df.col2.str.contains('6')]
Out[51]: 
  col1   col2
1   U2    2|6
2   U3  4a|6a
3   U4     6b

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

%timeit saf_df[saf_df.col2.str.contains('6')]
10 loops, best of 3: 20.1 ms per loop
%timeit saf_df[['6' in x for x in saf_df.col2]]
100 loops, best of 3: 3.14 ms per loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...