def to_excel(self, fname): """Save a scenario as an Excel file. NOTE: Cannot export solution currently (only model data) due to limitations in excel sheet names (cannot have multiple sheet names which are identical except for upper/lower case). Parameters ---------- fname : string path to file """ funcs = { 'set': (self.set_list, self.set), 'par': (self.par_list, self.par), } ix_name_map = {} dfs = {} for ix_type, (list_func, get_func) in funcs.items(): for item in list_func(): df = get_func(item) df = pd.Series(df) if isinstance(df, dict) else df if not df.empty: dfs[item] = df ix_name_map[item] = ix_type # map names to ix types df = pd.Series(ix_name_map).to_frame(name='ix_type') df.index.name = 'item' df = df.reset_index() dfs['ix_type_mapping'] = df pd_write(dfs, fname, index=False)
def test_pd_write(tmp_path): fname = 'test.csv' d = tmp_path / "sub" d.mkdir() data_frame = [1, 2, 3, 4] with pytest.raises(ValueError): assert utils.pd_write(data_frame, fname)
def make_obs(fname, exp, **kwargs): utils.pd_write(exp, fname, index=False) obs = utils.pd_read(fname, **kwargs) os.remove(fname) return obs