Вы можете сортировать dataFrame по счету, а затем удалять дубликаты. Я думаю, что это проще:
df.sort_values('count', ascending=False).drop_duplicates(['Sp','Mt'])
Если вы хотите удалить все дочерние текстовые узлы, вы можете использовать .contents()
, а затем .filter()
, чтобы уменьшить согласованный набор только для текстовых узлов:
$("#foo").contents().filter(function () {
return this.nodeType === 3;
}).remove();
Примечание. Это сохранит любые существующие обработчики событий над дочерними элементами, ответы на которые с помощью .html()
не будут выполняться ( поскольку элементы удалены из DOM и добавлены обратно).
Примечание 2: Ответы по некоторым связанным вопросам показывают аналогичный код в моем ответе здесь, но они используют константы nodeType
( например return this.nodeType === Node.TEXT_NODE
). Это плохая практика, поскольку IE ниже версии 9 не реализует свойство Node
. Безопаснее использовать целые числа (которые можно найти в DOM level 2 spec ).
Вот версия, отличная от jQuery, которая работает во всех основных браузерах в IE 5, чтобы продемонстрировать, насколько небезопасна жизнь без jQuery.
Демо: http://jsfiddle.net/ timdown / aHW9J /
Код:
var el = document.getElementById("foo"), child = el.firstChild, nextChild;
while (child) {
nextChild = child.nextSibling;
if (child.nodeType == 3) {
el.removeChild(child);
}
child = nextChild;
}
Вы можете использовать это.
$("#foo").html($("#foo").children());
.html
решения не удаляют обработчики в этом случае (или, может быть, они это делают?), Но это случайно, потому что.html
также может вставлять узлы (недокументированные). Edit: Хорошо, что они определенно удаляют обработчики из-за неявного.empty()
в.html
– Esailija 24 July 2012 в 16:07