我有一个包含 [“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 代码,用于重新创建两个初始观察值和我想要获得的结果的近似值(对于我想要的每个初始观察值,显示 36 种组合中的 3 种组合)。
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'])