pandas .loc медленнее после объединения, чем после слияния - PullRequest
1 голос
/ 28 мая 2019

У меня есть 2 больших фрейма данных, которые я ранее обрисовал в этом вопросе Более быстрый метод объединения и фильтрации двух перекрывающихся DataFrame с дополнительной общей переменной .

В качестве продолжения этого вопроса япытался использовать объединение вместо слияния для ускорения операции.Объединение действительно работает намного быстрее, чем объединение, но теперь оно кажется застрявшим в операции .loc, хотя сортируемые кадры данных кажутся почти идентичными, по крайней мере, с точки зрения имен столбцов и размеров df.

Вот пример двух разных подходов, которые я выбрал:

df = pd.merge(df2,df1,how='left',left_on=['CP_ID','Con'], \
                      right_on=['CP_ID','Con'])
df = df.loc[(df.Timestamp>df.dStart)&(df.Timestamp<df.dEnd)]

и


df2_test = df2.copy()
df1_test = df1.copy()

df11 = df1_test.set_index(['CP_ID','Con'])
df22 = df2_test.set_index(['CP_ID','Con'])
df_test2 = df22.join(df11, how='left')
df_test2.reset_index(inplace=True)
df_test2 = df_test2.loc[(df_test2.Timestamp>df_test2.dStart)&(df_test2.Timestamp<df_test2.dEnd)]

Я вижу трехкратное улучшение скорости в операции объединения / объединения, но в 10 раз замедляется работа .loc, если я использую соединение вместо слияния, что, по сути, сводит на нет все выгоды в целом.Кто-нибудь может объяснить это?Я вручную проверил кадры данных после объединения / слияния, и я не могу сказать, какая разница, которая может вызвать это огромное замедление в .loc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...