Tenho uma função que retorna múltiplas variáveis e estou tentando mapeá-la para um dataframe para acelerar o processamento de dados. No entanto, quando executo o código, ele não descompacta os dados e os adiciona às colunas.
código
import pandas as pd
def last_3_divisions(number: int, divide_by: int):
last_3 = {3: None, 2: None, 1: None}
for x in range(3, 0,-1):
number = number / divide_by
last_3[x] = number
return last_3[3], last_3[2], last_3[1]
mydf = pd.DataFrame([8,6,7,5,3,0,9], columns=["mynum"])
mydf["d3"], mydf["d2"], mydf["d1"] = mydf["mynum"].map(lambda x: last_3_divisions(x, 2))
executar o código funciona bem e irá gerar uma saída, no entanto, quando tento enviar as tuplas para colunas diferentes, ele produz um erro de valor
ValueError: muitos valores para descompactar (esperado 3)
Como descompactar as tuplas para classificá-las em colunas diferentes?
O uso de map é geralmente usado para transformações para um valor por linha. Então, se você quisesse definir o número 8 na primeira linha para 7, você poderia usar map (digamos lambda x: x-1).
No entanto, como você quer gerar 3 variáveis separadas, você pode usar apply em vez de pd.Series.
Sua abordagem de separar as colunas em suas próprias variáveis funcionaria, mas é uma prática comum usar apenas dois colchetes para ilustrar colunas em pandas. Me avise se isso faz sentido.