def data_from_dataframe(dataframe): """Convert a dataframe object to a list of dictionaries :param fp: File pointer object :return: tuple of table headers and data """ fields = dataframe.keys() header = header_population(fields) # iterate over the dataframe using `numpy.asscalar` to ensure we have native # python types, this prevents issues with serialization later on. data = [] for _, frame_row in dataframe.iterrows(): data_row = {} for name, value in frame_row.iteritems(): try: data_row[name] = numpy.asscalar(value) except AttributeError: data_row[name] = value data.append(data_row) return {'Sheet 1': (header, data)}
def build_sheets(name, list_data, sheets): # add default header to fix rendering of some data formats header = [i for i in range(1, 1 + len(list_data[0]))] values = data_population(list_data, headers=header) header = header_population(header) sheets[str(name)] = (header, values)
def test_header_population_returns_list_of_dicts(self): fake_headers = ['one', 'two', 'three'] populated = utilities.header_population(fake_headers) assert type(populated) == list assert type(populated[0]) == dict assert len(populated) == 3