No Pandas, você pode encontrar situações em que precisa criar várias novas colunas com base em uma função personalizada aplicada a um coluna existente. A tarefa pode parecer simples, mas desafios inesperados podem surgir devido ao tipo de retorno esperado da função.
Inicialmente, você pode tentar atribuir a saída de uma função diretamente para um intervalo de índices em um DataFrame usando a sintaxe df.ix[: ,10:16] = df.textcol.map(extract_text_features). No entanto, esta abordagem muitas vezes pode resultar em erros devido ao tipo de retorno incompatível da função.
Uma solução potencial é iterar sobre cada linha do DataFrame usando df.iterrows( ). Este método permite aplicar a função a cada linha individualmente e capturar os resultados como uma tupla. No entanto, esta abordagem pode ser significativamente mais lenta do que outras opções.
Uma abordagem mais eficiente e flexível é usar a função zip() em conjunto com map() para criar as novas colunas. A função zip() combina a saída da função em uma tupla, que pode então ser descompactada em colunas individuais. Por exemplo, o código a seguir demonstra como criar seis novas colunas usando o método zip():
df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))
Atualizações recentes do Pandas introduziram métodos mais convenientes para aplicar funções a colunas e criar novas colunas. Por exemplo, o método df.apply() permite especificar o formato de saída (DataFrame, Série ou lista) e manipular parâmetros adicionais. Além disso, o método df.assign() permite criar novas colunas diretamente, sem atribuir explicitamente a saída. Esses métodos mais recentes fornecem mais flexibilidade e eficiência na criação de várias novas colunas com base em uma função.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3