Estou tentando reordenar as colunas em um dataframe Polars e colocar 5 colunas de 100 primeiro (infelizmente, o documento deve ser legível no Excel). Não consigo encontrar uma maneira fácil de fazer isso.
Idealmente, eu gostaria de algo simples como
df.select(
'col2',
'col1',
r'^.*$', # the rest of the columns, but this throws a duplicate column name error
)
Lookahead negativo não é suportado, portanto não é possível criar um regex que exclua minhas colunas selecionadas. Eu poderia fazer duas seleções sobrepostas, eliminar as colunas de uma seleção e depois juntá-las, mas essa não parece ser a maneira pretendida de fazer isso. Todas as outras soluções que encontrei envolvem nomear explicitamente cada coluna, o que estou tentando evitar à medida que as colunas são adicionadas ou mudam de nome com certa frequência.
Envolve nomear as colunas duas vezes, mas você pode excluí-las:
pl.exclude()
Exemplo:
Há uma solicitação de recurso para permitir
df.select('col2', 'col1', ...)
Você pode combinar
pl.exclude
com o operador morsa.Suponha que você tenha algo como
e você deseja que as 3 primeiras colunas sejam 'a', 'b', 'c'. Você pode fazer:
Isso cria uma lista chamada
start_cols
que contém 'a','b','c'. O asterisco desembrulha a lista e entãopl.exclude
usa o conteúdo destart_cols
para dizer aos polares para retornar tudo, excetostart_cols
.Se preferir, você pode fazer esta sintaxe: