Сначала соедините столбцы вместе, затем DataFrame.set_index
с параметром append=True
и измените форму на Series.unstack
:
s = df['port1'].astype(str) + df['port2'].astype(str)
df = df.set_index(s, append=True)['w_ret'].unstack()
print (df)
0.00.0 0.01.0 1.00.0 1.01.0
date
2006-01-01 0.067991 0.033219 0.073324 0.039730
2006-01-02 0.033616 0.022452 -0.024854 0.020411
Глобальный Gzip в HttpModule
Если у Вас нет доступа к заключительному экземпляру IIS (совместно использованный хостинг...), можно создать HttpModule, который добавляет этот код к каждому HttpApplication. Событие Begin_Request:
HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;
Тестирование
Престижность, никакое решение не сделано без тестирования. Мне нравится использовать плагин Firefox "Liveheaders", который он показывает всей информации о каждом сообщении http между браузером и сервером, включая сжатие, размер файла (который Вы могли сравнить с размером файла на сервере).
Если Вы будете использовать YSlow с Firebug и анализировать Вашу производительность страницы, то YSlow, конечно, скажет Вам, какие артефакты на Вашей странице не являются gzip'd!