def test_yarn_relabel_a(self) -> None: f1 = ff.parse('s(4,2)').rename('f1') f2 = ff.parse('s(4,5)').rename('f2') f3 = ff.parse('s(2,2)').rename('f3') f4 = ff.parse('s(2,8)').rename('f4') f5 = ff.parse('s(4,4)').rename('f5') f6 = ff.parse('s(6,4)').rename('f6') b1 = Bus.from_frames((f1, f2, f3)) b2 = Bus.from_frames((f4, )) b3 = Bus.from_frames((f5, f6)) y1 = Yarn((b1, b2, b3)) self.assertEqual( y1.relabel(lambda x: f'--{x}--').loc['--4--'].shape, (4, 4)) # None is a no-op self.assertEqual(y1.relabel(None).loc[4].shape, (4, 4)) with self.assertRaises(RelabelInvalid): y1.relabel({3, 4, 5}) self.assertEqual( y1.relabel(tuple('abcdef'))['d':].status['shape'].to_pairs(), (('d', (2, 8)), ('e', (4, 4)), ('f', (6, 4)))) y2 = Yarn((b1, b2, b3), index=tuple('abcdef')) self.assertEqual(y2.index.values.tolist(), ['a', 'b', 'c', 'd', 'e', 'f']) self.assertEqual( y2.relabel(IndexAutoFactory).index.values.tolist(), [0, 1, 2, 3, 4, 5])
def test_yarn_init_c(self) -> None: with self.assertRaises(ErrorInitYarn): Yarn((ff.parse('s(2,2)'), )) with self.assertRaises(ErrorInitYarn): Yarn(Series((ff.parse('s(2,2)'), ), dtype=object))
def test_yarn_init_b(self) -> None: f1 = ff.parse('s(4,4)|v(int,float)').rename('f1') f2 = ff.parse('s(4,4)|v(str)').rename('f2') f3 = ff.parse('s(4,4)|v(bool)').rename('f3') b1 = Bus.from_frames((f1, f2, f3)) f4 = ff.parse('s(4,4)|v(int,float)').rename('f4') f5 = ff.parse('s(4,4)|v(str)').rename('f5') b2 = Bus.from_frames((f4, f5)) y1 = Yarn((b1, b2), index=tuple('abcde')) self.assertEqual(y1.index.values.tolist(), list('abcde')) self.assertEqual(y1[['a', 'c', 'e']].shape, (3, )) y2 = Yarn((b1, b2)) self.assertEqual(y2.index.values.tolist(), list(range(5))) self.assertEqual(y2[2:].shape, (3, )) y3 = Yarn((b2, ), index=('2021-01-01', '2021-02-15'), index_constructor=IndexDate) self.assertEqual(y3.index.__class__, IndexDate) self.assertEqual( y3.index.values.tolist(), [datetime.date(2021, 1, 1), datetime.date(2021, 2, 15)]) with self.assertRaises(ErrorInitYarn): y4 = Yarn((b2, ), index=range(5))
def test_yarn_rehierarch_b(self) -> None: f1 = ff.parse('s(4,2)').rename('f1') f2 = ff.parse('s(4,5)').rename('f2') f3 = ff.parse('s(2,2)').rename('f3') b1 = Bus.from_frames((f1, f2, f3)) y1 = Yarn((b1, )) with self.assertRaises(RuntimeError): y1.rehierarch((1, 0))
def test_yarn_rehierarch_a(self) -> None: f1 = ff.parse('s(4,2)').rename('f1') f2 = ff.parse('s(4,5)').rename('f2') f3 = ff.parse('s(2,2)').rename('f3') f4 = ff.parse('s(2,8)').rename('f4') f5 = ff.parse('s(4,4)').rename('f5') f6 = ff.parse('s(6,4)').rename('f6') b1 = Bus.from_frames((f1, f2, f3)) b2 = Bus.from_frames((f4, )) b3 = Bus.from_frames((f5, f6)) y1 = Yarn((b1, b2, b3), index=IndexHierarchy.from_product(('a', 'b'), (1, 2, 3))) self.assertEqual( y1.iloc[[0, 2, 4]].rehierarch((1, 0)).status['shape'].to_pairs(), (((1, 'a'), (4, 2)), ((3, 'a'), (2, 2)), ((2, 'b'), (4, 4))))
def test_yarn_relabel_flat_a(self) -> None: f1 = ff.parse('s(4,2)').rename('f1') f2 = ff.parse('s(4,5)').rename('f2') f3 = ff.parse('s(2,2)').rename('f3') f4 = ff.parse('s(2,8)').rename('f4') f5 = ff.parse('s(4,4)').rename('f5') f6 = ff.parse('s(6,4)').rename('f6') b1 = Bus.from_frames((f1, f2, f3)) b2 = Bus.from_frames((f4,)) b3 = Bus.from_frames((f5, f6)) y1 = Yarn((b1, b2, b3), index=IndexHierarchy.from_product(('a', 'b'), (1, 2, 3))) self.assertEqual( y1.relabel_flat()[('a', 3):].status['shape'].to_pairs(), ((('a', 3), (2, 2)), (('b', 1), (2, 8)), (('b', 2), (4, 4)), (('b', 3), (6, 4))) )
def test_yarn_init_d(self) -> None: with self.assertRaises(ErrorInitYarn): Yarn(Series(np.array((False, True))))
def test_yarn_init_a(self) -> None: with self.assertRaises(ErrorInitSeries): Yarn(np.array([3, 4]))