def dataset_to_basic_sheets(abs_filepath): dataset = get_dataset_df(abs_filepath) def remove_useless_columns(df): columns_to_remove = [x for x in df.columns if 'Unnamed:' in str(x)] return df.drop(columns_to_remove, 1) def remove_rows_with_no_type(df): return df[df.type.notnull()] dataset = remove_useless_columns(dataset) dataset = remove_rows_with_no_type(dataset) names = dataset[dataset.type.map(lambda x: x in ['data', 'param'])][['var', 'name']] validate_variable_names(names['var'].tolist()) equations = dataset[dataset.type == 'eq'][['name']] def get_data_years(df): years = df[dataset.type == 'is_forecast'].iloc[0] return [year for year, is_forecast in years.iteritems() if is_forecast == 0] data = dataset[dataset.type == 'data'][['var'] + get_data_years(dataset)] controls = dataset[dataset.type == 'param'].drop(['type', 'name'], 1) def to_array_with_years_and_values(df): result = np.concatenate(([np.array(df.columns)], df.as_matrix().astype(object))) result[0][0] = '' return result write_array_to_xl_using_xlwings(to_array_with_years_and_values(data), abs_filepath, 'data') write_array_to_xl_using_xlwings(to_array_with_years_and_values(controls), abs_filepath, 'controls') write_array_to_xl_using_xlwings(names.as_matrix(), abs_filepath, 'names') write_array_to_xl_using_xlwings(equations.as_matrix(), abs_filepath, 'equations')
def test_variable_names_validation(): from import_specification import validate_variable_names validate_variable_names([]) validate_variable_names(['no_dots1', 'no_dots2']) with pytest.raises(ValueError) as e: validate_variable_names(['no_dots', 'with.dot'])