У меня есть следующие функции, где ДФ является пандой dataframe что 159538 строк х 3 колонков:Как ускорить питон цикл
dfs = []
for i in df['email_address']:
data = df[df['email_address'] == i]
data['difference'] = data['ts_placed'].diff().astype('timedelta64[D]')
repeat = []
for a in data['difference']:
if a > 10:
repeat.append(0)
elif a <= 10:
repeat.append(1)
else:
repeat.append(0)
data['repeat'] = repeat
dfs.append(data)
функция работает очень медленно. Я хотел бы ускорить процесс, используя многопроцессорность. Это SO question показывает, как это сделать в R. Каков эквивалентный код для python?
это образец данных после запуска:
df['difference'] = df.groupby('email_address')['ts_placed'].diff()
df
Out[6]:
email_address ts_placed difference
0 [email protected] 2015-08-06 00:00:34 NaT
1 [email protected] 2015-08-06 00:05:38 NaT
2 [email protected] 2015-08-06 00:09:20 NaT
3 [email protected] 2015-08-06 00:10:01 NaT
4 terry.wfdfdfdfdfy-holdings.co.uk 2015-08-06 00:14:00 NaT
5 [email protected] 2015-08-06 00:14:00 NaT
6 [email protected] 2015-08-06 00:14:00 NaT
7 [email protected] 2015-08-06 00:14:20 NaT
8 [email protected] 2015-08-06 00:14:43 NaT
9 [email protected] 2015-08-06 00:17:03 NaT
10 [email protected] 2015-08-06 00:17:58 NaT
...
22 [email protected] 2015-08-06 00:46:12 0 days 00:04:15
Это выглядит все, что вы делаете, группируя по адресам электронной почты, то вычисления ' diff' в этих группах, а затем назначить счетчик, если значение diff больше, чем '10' правильно? Также, если это 'pandas', то пометьте его так – EdChum
да, это правильно –
Можете ли вы отправить исходные данные и код для воспроизведения вашего df, чтобы избежать каких-либо неопределенностей – EdChum