Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 3
0
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))
Esempio n. 4
0
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)
Esempio n. 5
0
 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)
Esempio n. 6
0
                    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)
        })