1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import numpy as np
- import pytest
- from pandas._libs import lib
- import pandas.util._test_decorators as td
- import pandas as pd
- import pandas._testing as tm
- def assert_block_lengths(x):
- assert len(x) == len(x._mgr.blocks[0].mgr_locs)
- return 0
- def cumsum_max(x):
- x.cumsum().max()
- return 0
- @pytest.mark.parametrize(
- "func",
- [
- cumsum_max,
- pytest.param(assert_block_lengths, marks=td.skip_array_manager_invalid_test),
- ],
- )
- def test_mgr_locs_updated(func):
- # https://github.com/pandas-dev/pandas/issues/31802
- # Some operations may require creating new blocks, which requires
- # valid mgr_locs
- df = pd.DataFrame({"A": ["a", "a", "a"], "B": ["a", "b", "b"], "C": [1, 1, 1]})
- result = df.groupby(["A", "B"]).agg(func)
- expected = pd.DataFrame(
- {"C": [0, 0]},
- index=pd.MultiIndex.from_product([["a"], ["a", "b"]], names=["A", "B"]),
- )
- tm.assert_frame_equal(result, expected)
- @pytest.mark.parametrize(
- "binner,closed,expected",
- [
- (
- np.array([0, 3, 6, 9], dtype=np.int64),
- "left",
- np.array([2, 5, 6], dtype=np.int64),
- ),
- (
- np.array([0, 3, 6, 9], dtype=np.int64),
- "right",
- np.array([3, 6, 6], dtype=np.int64),
- ),
- (np.array([0, 3, 6], dtype=np.int64), "left", np.array([2, 5], dtype=np.int64)),
- (
- np.array([0, 3, 6], dtype=np.int64),
- "right",
- np.array([3, 6], dtype=np.int64),
- ),
- ],
- )
- def test_generate_bins(binner, closed, expected):
- values = np.array([1, 2, 3, 4, 5, 6], dtype=np.int64)
- result = lib.generate_bins_dt64(values, binner, closed=closed)
- tm.assert_numpy_array_equal(result, expected)
|