Вы можете использовать селекторы CSS:
doc.css('th:not(.first)')
В этом простом случае вы также можете использовать xpath:
doc.xpath('//th[not(@class="first")]')
Разница в том, что xpath требует точного совпадения в имени класса. Если у вас была возможность иметь несколько классов, например, <th class="red first">
тогда селектор CSS его идентифицирует, а xpath - нет (без усложнения).
Редактировать: просто для справки, если вы хотите, чтобы xpath мог выбрать класс, когда в элементе может быть несколько классов:
doc.xpath('//th[@class and contains(concat(" ",normalize-space(@class)," "), " first ")]')
Обычно XPath намного более гибок, чем селекторы CSS, но это крайний случай HTML, который предпочитает CSS.