code: def make_input_dataframe_by_entity(tax_benefit_system, nb_persons, nb_groups):
      input_dataframe_by_entity = dict()
      person_entity = [entity for entity in tax_benefit_system.entities if entity.is_person][0]
      person_id = np.arange(nb_persons)
      input_dataframe_by_entity = dict()
      input_dataframe_by_entity[person_entity.key] = pd.DataFrame({
          person_entity.key + '_id': person_id,
          })
      input_dataframe_by_entity[person_entity.key].set_index('person_id')
      adults = [0] + sorted(random.sample(range(1, nb_persons), nb_groups - 1))
      members_entity_id = np.empty(nb_persons, dtype = int)
      members_legacy_role = np.empty(nb_persons, dtype = int)
      id_group = -1
      for id_person in range(nb_persons):
          if id_person in adults:
              id_group += 1
              legacy_role = 0
          else:
              legacy_role = 2 if legacy_role == 0 else legacy_role + 1
          members_legacy_role[id_person] = legacy_role
          members_entity_id[id_person] = id_group
      for entity in tax_benefit_system.entities:
          if entity.is_person:
              continue
          key = entity.key
          person_dataframe = input_dataframe_by_entity[person_entity.key]
          person_dataframe[key + '_id'] = members_entity_id
          person_dataframe[key + '_legacy_role'] = members_legacy_role
          person_dataframe[key + '_role'] = np.where(
              members_legacy_role == 0, entity.flattened_roles[0].key, entity.flattened_roles[-1].key)
          input_dataframe_by_entity[key] = pd.DataFrame({
              key + '_id': range(nb_groups)
              })
          input_dataframe_by_entity[key].set_index(key + '_id', inplace = True)
      return input_dataframe_by_entity