Вот один из способов сделать это:
df["dummy"] = df.Community_population.map(lambda x: list(range(x)))
df = df.explode("dummy")
df["Gender"] = np.random.choice(["M", "F"], len(df))
df["Age_Group"] = np.random.choice(["child", "adult", "old"], len(df), p=[.3, .5, .2])
df.loc[df.Age_Group == "old", "age"] = np.random.randint(50, 90, len(df[df.Age_Group == "old"] ))
df.loc[df.Age_Group == "child", "age"] = np.random.randint(0, 18, len(df[df.Age_Group == "child"] ))
df.loc[df.Age_Group == "adult", "age"] = np.random.randint(18, 50, len(df[df.Age_Group == "adult"] ))
результат:
введите описание изображения здесь