У меня есть набор данных со столбцами ["Uni", "Region", "Profession", "Level_Edu", "Financial_Base", "Learning_Time", "GENDER". Все значения в полях ["Uni", "Region", "Profession"] заполняются, а ["Level_Edu", "Financial_Base", "Learning_Time", "GENDER"] всегда содержат NA.
Для каждого столбца с NA существует несколько возможных значений
Level_Edu = ['undergrad', 'grad', 'PhD']
Financial_Base = ['personal', 'grant']
Learning_Time = ["morning", "day", "evening"]
GENDER = ['Male', 'Female']
Я хочу сгенерировать все возможные комбинации ["Level_Edu", "Financial_Base", "Learning_Time", "GENDER"] для каждого наблюдения в исходных данных. Чтобы каждое исходное наблюдение было представлено 36 новыми наблюдениями (полученными по формуле комбинаторики: N1 * N2 * N3 * N4, где Ni — длина i-го вектора возможных значений для столбца)
Вот код Python для воссоздания двух начальных наблюдений и аппроксимации результата, который я хочу получить (показан 3 комбинации из 36 для каждого желаемого начального наблюдения).
< pre class="lang-py Prettyprint-override">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'])
Подробнее здесь: https://stackoverflow.com/questions/783 ... -dataframe