Eu tenho um DataFrame Polars contendo uma coluna com strings representando exposições 'esparsas' do setor, assim:
pl.DataFrame(
[
pl.Series("sector_exposure", [
'Technology=0.207;Financials=0.090;Health Care=0.084;Consumer Discretionary=0.069',
'Financials=0.250;Health Care=0.200;Consumer Staples=0.150;Industrials=0.400'
], dtype=pl.String),
]
)
exposição_do setor |
---|
Tecnologia=0,207;Finanças=0,090;Cuidados de saúde=0,084;Consumidor discricionário=0,069 |
Finanças = 0,250; Cuidados de saúde = 0,200; Produtos básicos de consumo = 0,150; Industriais = 0,400 |
Quero "descompactar" essa string em novas colunas para cada setor (por exemplo, Tecnologia, Finanças, Saúde) com valores associados ou uma estrutura polar com nomes de setores como campos e valores de exposição.
Estou procurando uma solução mais eficiente usando apenas expressões polares, sem recorrer a loops Python (ou funções mapeadas em python). Alguém pode fornecer orientação sobre como fazer isso?
Foi isso que descobri até agora - que funciona na produção da estrutura desejada, mas é um pouco lento.
(
df["sector_exposure"]
.str
.split(";")
.map_elements(lambda x: {entry.split('=')[0]: float(entry.split('=')[1]) for entry in x},
skip_nulls=True,
)
)
Obrigado!