Оптимизация работы панд для пересечения столбцов - PullRequest
1 голос
/ 19 сентября 2019

У меня есть DataFrame с 2 столбцами (событие и события).Столбец события содержит конкретный вечер, а столбец событий содержит список идентификаторов событий.

Пример: -

df 
event   events
'a'       ['x','y','abc','a']
'b'      ['x','y','c','a'] 
'c'       ['a','c']
'd'        ['b']

Я хочу создать еще один столбец (eventoccured), указывающий, есть ли событие в событиях.

eventoccured 
1
0
1
0

В настоящее время я использую

df['eventoccured']= df.apply(lambda x: x['event'] in x['events'], axis=1)

, который дает желаемый результат, но медленный, я хочу более быстрое решение для этого.

Спасибо

1 Ответ

1 голос
/ 19 сентября 2019

Одной из идей является понимание списка использования:

#40k rows
df = pd.concat([df] * 10000, ignore_index=True)

In [217]: %timeit df['eventoccured']= df.apply(lambda x: x['event'] in x['events'], axis=1)
1.15 s ± 36.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [218]: %timeit df['eventoccured1'] = [x in y for x, y in zip(df['event'], df['events'])]
15.2 ms ± 135 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...