Eu tenho um conjunto de dados com colunas ["Uni", 'Region', "Profession", "Level_Edu", 'Financial_Base', 'Learning_Time', 'GENDER']. Todos os valores em ["Uni", 'Region', "Profession"] são preenchidos enquanto ["Level_Edu", 'Financial_Base', 'Learning_Time', 'GENDER'] sempre contêm NAs.
Para cada coluna com NAs existem vários valores possíveis
Level_Edu = ['undergrad', 'grad', 'PhD']
Financial_Base = ['personal', 'grant']
Learning_Time = ["morning", "day", "evening"]
GENDER = ['Male', 'Female']
Quero gerar todas as combinações possíveis de ["Level_Edu", 'Financial_Base', 'Learning_Time', 'GENDER'] para cada observação nos dados iniciais. Para que cada observação inicial fosse representada por 36 novas observações (obtidas pela fórmula da combinatória: N1 * N2 * N3 * N4, onde Ni é o comprimento do i-ésimo vetor de valores possíveis para uma coluna)
Aqui está um código Python para recriar duas observações iniciais e uma aproximação do resultado que desejo obter (mostrando 3 combinações de 36 para cada observação inicial que desejo).
import pandas as pd
import numpy as np
sample_data_as_is = pd.DataFrame([["X1", "Y1", "Z1", np.nan, np.nan, np.nan, np.nan], ["X2", "Y2", "Z2", np.nan, np.nan, np.nan, np.nan]], columns=["Uni", 'Region', "Profession", "Level_Edu", 'Financial_Base', 'Learning_Time', 'GENDER'])
sample_data_to_be = pd.DataFrame([["X1", "Y1", "Z1", "undergrad", "personal", "morning", 'Male'], ["X2", "Y2", "Z2", "undergrad", "personal", "morning", 'Male'],
["X1", "Y1", "Z1", "grad", "personal", "morning", 'Male'], ["X2", "Y2", "Z2", "grad", "personal", "morning", 'Male'],
["X1", "Y1", "Z1", "undergrad", "grant", "morning", 'Male'], ["X2", "Y2", "Z2", "undergrad", "grant", "morning", 'Male']], columns=["Uni", 'Region', "Profession", "Level_Edu", 'Financial_Base', 'Learning_Time', 'GENDER'])