import scprep import numpy as np import pandas as pd from pandas.core.internals.blocks import ExtensionBlock def test_pandas_series_rmatmul(): mat = np.random.random(size=(100, 100)) arr = np.random.random(size=100) df = pd.DataFrame(mat) ser = pd.Series(arr) np.testing.assert_array_equal(mat @ ser, (df @ ser).values) def test_pandas_sparse_iloc(): X = pd.DataFrame([[0, 1, 1], [0, 0, 1], [0, 0, 0]]).astype( pd.SparseDtype(float, fill_value=0.0) ) assert np.all(~np.isnan(X.iloc[[0, 1]].to_numpy())) class CustomBlock(ExtensionBlock): _holder = np.ndarray def test_fill_value(): values = pd.Series(np.arange(3), dtype=pd.UInt16Dtype()) custom_block = CustomBlock(values, placement=slice(1, 2)) assert pd.isna(custom_block.fill_value) values = pd.Series(np.arange(3), dtype=pd.SparseDtype(float, 0.0)) custom_block = CustomBlock(values, placement=slice(1, 2)) assert not pd.isna(custom_block.fill_value)