Создать ключ справки здесь
s=df.Age=='5 ~ 9'
yourdf=df.groupby([df.Geo,s]).agg({'Age':'last','2010':'sum','2011':'sum','2012':'sum'})
yourdf
Age 2010 2011 2012
Geo Age
bc False 0 ~ 4 3 6 3
True 5 ~ 9 3 1 1
mt False 0 ~ 4 6 5 5
True 5 ~ 9 6 6 6
toronto False 0 ~ 4 7 4 9
True 5 ~ 9 4 5 5
Это зависит от того, как вы на самом деле загружаете jQuery. Если вы добавляете элемент script на страницу, вы можете использовать ту же технику, которую использует jQuery для динамической загрузки скрипта.
EDIT : Я сделал свою домашнюю работу и фактически извлек функцию loadScript из кода jQuery для использования в вашей закладке. Это может быть полезно для многих (включая меня).
function loadScript(url, callback)
{
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = url;
// Attach handlers for all browsers
var done = false;
script.onload = script.onreadystatechange = function()
{
if( !done && ( !this.readyState
|| this.readyState == "loaded"
|| this.readyState == "complete") )
{
done = true;
// Continue your code
callback();
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
head.removeChild( script );
}
};
head.appendChild(script);
}
// Usage:
// This code loads jQuery and executes some code when jQuery is loaded
loadScript("https://code.jquery.com/jquery-latest.js", function()
{
$('my_element').hide();
});
Чтобы ответить на ваш первый вопрос: Javascript интерпретируется последовательно, поэтому любой следующий код букмарклета не будет выполняться, пока библиотека не будет загружена (при условии, что библиотека была успешно интерпретирована - без синтаксических ошибок).
Чтобы предотвратить кэширование файлов, вы можете добавить бессмысленную строку запроса ...
url = 'jquery.js?x=' + new Date().getTime();
Я немного сблизился с этим , но не полностью , Было бы неплохо иметь отдельный пример букмарклета, демонстрирующий, как избежать кеширования.