def test_from_rows(self): c = ColumnGroup.from_rows((int, str), [("colA", "colB"), (1, "a"), (2, "b"), (3, "c")]) self.assertEqual( ColumnGroup([ Column("colA", int, [1, 2, 3]), Column("colB", str, ["a", "b", "c"]) ]), c)
def _append_other_columns_and_put_rows(self, other_handle: "DataHandle", new_rows): columns = [ Column(col.name, col.col_type, []) for col in itertools.chain( self._data_column_group, other_handle._data_column_group) ] column_group = ColumnGroup(columns) column_group.replace_rows(new_rows) self._data_column_group.replace_columns(column_group.columns)
def read_csv(csv_path: Union[str, Path], mcsv_path: Optional[Union[str, Path]] = None, nrows=100) -> Optional[Data]: if isinstance(csv_path, str): csv_path = Path(csv_path) if mcsv_path is None: mcsv_path = csv_path.with_suffix(".mcsv") if not mcsv_path.is_file(): missing_mcsv(csv_path) # util command to open a window return None with mcsv.open_csv(csv_path, "r", mcsv_path) as mcsv_reader: if nrows >= 0: reader = islice(mcsv_reader, nrows) else: reader = mcsv_reader header = [to_standard(n) for n in next(reader)] column_group = ColumnGroup([ Column(name, description, values) for name, description, *values in zip( header, mcsv_reader.descriptions, *reader) ]) return Data( column_group, DataSource.create(to_standard(csv_path.stem), csv_path, mcsv_reader.meta_csv_data))
def data_from_rows(col_types, rows): columns = list(zip(*rows)) return Data( ColumnGroup([ Column(col[0], col_type, col[1:]) for col_type, col in zip(col_types, columns) ]), None)
def __getitem__(self, item): indices = to_indices(len(self._column_group), item) column_group = ColumnGroup([self._column_group[i] for i in indices]) return DataHandle(self._column_group, indices)
description = TextFieldDescription.INSTANCE b.description_by_col_index(i, description) meta_csv_data = b.build() else: b = MetaCSVDataBuilder() cur_data = self._data_source.meta_csv_data b.encoding(cur_data.encoding) b.bom(cur_data.bom) b._dialect = cur_data.dialect for i, col in enumerate(self._column_group): description = self._data_source.get_description(col.col_info) b.description_by_col_index(i, description) meta_csv_data = b.build() return meta_csv_data if __name__ == "__main__": import doctest doctest.testmod( extraglobs={ 'original_test_data': Data( ColumnGroup([ Column("A", int, [1, 5, 3]), Column("B", int, [3, 2, 4]), Column("C", int, [2, 2, 7]), Column("D", int, [4, 7, 8]) ]), None) })