Пример #1
0
    def set(self, item, value):
        """
        Modify Block in-place with new item value

        Returns
        -------
        None
        """
        loc = self.items.get_loc(item)

        if value.dtype != _NS_DTYPE:
            value = tslib.cast_to_nanoseconds(value)

        self.values[loc] = value
Пример #2
0
    def set(self, item, value):
        """
        Modify Block in-place with new item value

        Returns
        -------
        None
        """
        loc = self.items.get_loc(item)

        if value.dtype != _NS_DTYPE:
            value = tslib.cast_to_nanoseconds(value)

        self.values[loc] = value
Пример #3
0
    def __init__(self, values, items, ref_items, ndim=2):
        if values.dtype != _NS_DTYPE:
            values = tslib.cast_to_nanoseconds(values)

        Block.__init__(self, values, items, ref_items, ndim=ndim)
Пример #4
0
def form_blocks(arrays, names, axes):
    # pre-filter out items if we passed it
    items = axes[0]

    if len(arrays) < len(items):
        extra_items = items - Index(names)
    else:
        extra_items = []

    # put "leftover" items in float bucket, where else?
    # generalize?
    float_items = []
    complex_items = []
    int_items = []
    bool_items = []
    object_items = []
    datetime_items = []
    for k, v in zip(names, arrays):
        if issubclass(v.dtype.type, np.floating):
            float_items.append((k, v))
        elif issubclass(v.dtype.type, np.complexfloating):
            complex_items.append((k, v))
        elif issubclass(v.dtype.type, np.datetime64):
            if v.dtype != _NS_DTYPE:
                v = tslib.cast_to_nanoseconds(v)

            if hasattr(v, 'tz') and v.tz is not None:
                object_items.append((k, v))
            else:
                datetime_items.append((k, v))
        elif issubclass(v.dtype.type, np.integer):
            if v.dtype == np.uint64:
                # HACK #2355 definite overflow
                if (v > 2**63 - 1).any():
                    object_items.append((k, v))
                    continue
            int_items.append((k, v))
        elif v.dtype == np.bool_:
            bool_items.append((k, v))
        else:
            object_items.append((k, v))

    blocks = []
    if len(float_items):
        float_block = _simple_blockify(float_items, items, np.float64)
        blocks.append(float_block)

    if len(complex_items):
        complex_block = _simple_blockify(complex_items, items, np.complex128)
        blocks.append(complex_block)

    if len(int_items):
        int_block = _simple_blockify(int_items, items, np.int64)
        blocks.append(int_block)

    if len(datetime_items):
        datetime_block = _simple_blockify(datetime_items, items, _NS_DTYPE)
        blocks.append(datetime_block)

    if len(bool_items):
        bool_block = _simple_blockify(bool_items, items, np.bool_)
        blocks.append(bool_block)

    if len(object_items) > 0:
        object_block = _simple_blockify(object_items, items, np.object_)
        blocks.append(object_block)

    if len(extra_items):
        shape = (len(extra_items),) + tuple(len(x) for x in axes[1:])

        # empty items -> dtype object
        block_values = np.empty(shape, dtype=object)

        block_values.fill(nan)

        na_block = make_block(block_values, extra_items, items)
        blocks.append(na_block)
        blocks = _consolidate(blocks, items)

    return blocks
Пример #5
0
    def __init__(self, values, items, ref_items, ndim=2):
        if values.dtype != _NS_DTYPE:
            values = tslib.cast_to_nanoseconds(values)

        Block.__init__(self, values, items, ref_items, ndim=ndim)
Пример #6
0
def form_blocks(arrays, names, axes):
    # pre-filter out items if we passed it
    items = axes[0]

    if len(arrays) < len(items):
        extra_items = items - Index(names)
    else:
        extra_items = []

    # put "leftover" items in float bucket, where else?
    # generalize?
    float_items = []
    complex_items = []
    int_items = []
    bool_items = []
    object_items = []
    datetime_items = []
    for k, v in zip(names, arrays):
        if issubclass(v.dtype.type, np.floating):
            float_items.append((k, v))
        elif issubclass(v.dtype.type, np.complexfloating):
            complex_items.append((k, v))
        elif issubclass(v.dtype.type, np.datetime64):
            if v.dtype != _NS_DTYPE:
                v = tslib.cast_to_nanoseconds(v)

            if hasattr(v, 'tz') and v.tz is not None:
                object_items.append((k, v))
            else:
                datetime_items.append((k, v))
        elif issubclass(v.dtype.type, np.integer):
            if v.dtype == np.uint64:
                # HACK #2355 definite overflow
                if (v > 2**63 - 1).any():
                    object_items.append((k, v))
                    continue
            int_items.append((k, v))
        elif v.dtype == np.bool_:
            bool_items.append((k, v))
        else:
            object_items.append((k, v))

    blocks = []
    if len(float_items):
        float_block = _simple_blockify(float_items, items, np.float64)
        blocks.append(float_block)

    if len(complex_items):
        complex_block = _simple_blockify(complex_items, items, np.complex128)
        blocks.append(complex_block)

    if len(int_items):
        int_block = _simple_blockify(int_items, items, np.int64)
        blocks.append(int_block)

    if len(datetime_items):
        datetime_block = _simple_blockify(datetime_items, items, _NS_DTYPE)
        blocks.append(datetime_block)

    if len(bool_items):
        bool_block = _simple_blockify(bool_items, items, np.bool_)
        blocks.append(bool_block)

    if len(object_items) > 0:
        object_block = _simple_blockify(object_items, items, np.object_)
        blocks.append(object_block)

    if len(extra_items):
        shape = (len(extra_items), ) + tuple(len(x) for x in axes[1:])

        # empty items -> dtype object
        block_values = np.empty(shape, dtype=object)

        block_values.fill(nan)

        na_block = make_block(block_values, extra_items, items)
        blocks.append(na_block)
        blocks = _consolidate(blocks, items)

    return blocks
    def test_index_cast_datetime64_other_units(self):
        arr = np.arange(0, 100, 10, dtype=np.int64).view('M8[D]')
        idx = Index(arr)

        self.assertTrue((idx.values == tslib.cast_to_nanoseconds(arr)).all())
Пример #8
0
    def test_index_cast_datetime64_other_units(self):
        arr = np.arange(0, 100, 10, dtype=np.int64).view('M8[D]')
        idx = Index(arr)

        self.assertTrue((idx.values == tslib.cast_to_nanoseconds(arr)).all())