@@ -1616,6 +1616,83 @@ def test_ts_repr(self):
1616
1616
ts = Series (np .random .randn (len (index )), index = index )
1617
1617
repr (ts )
1618
1618
1619
+ def test_period_index_unicode (self ):
1620
+ pi = PeriodIndex (freq = 'A' , start = '1/1/2001' , end = '12/1/2009' )
1621
+ assert_equal (len (pi ), 9 )
1622
+ assert_equal (pi , eval (unicode (pi )))
1623
+
1624
+ pi = PeriodIndex (freq = 'Q' , start = '1/1/2001' , end = '12/1/2009' )
1625
+ assert_equal (len (pi ), 4 * 9 )
1626
+ assert_equal (pi , eval (unicode (pi )))
1627
+
1628
+ pi = PeriodIndex (freq = 'M' , start = '1/1/2001' , end = '12/1/2009' )
1629
+ assert_equal (len (pi ), 12 * 9 )
1630
+ assert_equal (pi , eval (unicode (pi )))
1631
+
1632
+ start = Period ('02-Apr-2005' , 'B' )
1633
+ i1 = PeriodIndex (start = start , periods = 20 )
1634
+ assert_equal (len (i1 ), 20 )
1635
+ assert_equal (i1 .freq , start .freq )
1636
+ assert_equal (i1 [0 ], start )
1637
+ assert_equal (i1 , eval (unicode (i1 )))
1638
+
1639
+ end_intv = Period ('2006-12-31' , 'W' )
1640
+ i1 = PeriodIndex (end = end_intv , periods = 10 )
1641
+ assert_equal (len (i1 ), 10 )
1642
+ assert_equal (i1 .freq , end_intv .freq )
1643
+ assert_equal (i1 [- 1 ], end_intv )
1644
+ assert_equal (i1 , eval (unicode (i1 )))
1645
+
1646
+ end_intv = Period ('2006-12-31' , '1w' )
1647
+ i2 = PeriodIndex (end = end_intv , periods = 10 )
1648
+ assert_equal (len (i1 ), len (i2 ))
1649
+ self .assert_ ((i1 == i2 ).all ())
1650
+ assert_equal (i1 .freq , i2 .freq )
1651
+ assert_equal (i1 , eval (unicode (i1 )))
1652
+ assert_equal (i2 , eval (unicode (i2 )))
1653
+
1654
+ end_intv = Period ('2006-12-31' , ('w' , 1 ))
1655
+ i2 = PeriodIndex (end = end_intv , periods = 10 )
1656
+ assert_equal (len (i1 ), len (i2 ))
1657
+ self .assert_ ((i1 == i2 ).all ())
1658
+ assert_equal (i1 .freq , i2 .freq )
1659
+ assert_equal (i1 , eval (unicode (i1 )))
1660
+ assert_equal (i2 , eval (unicode (i2 )))
1661
+
1662
+ try :
1663
+ PeriodIndex (start = start , end = end_intv )
1664
+ raise AssertionError ('Cannot allow mixed freq for start and end' )
1665
+ except ValueError :
1666
+ pass
1667
+
1668
+ end_intv = Period ('2005-05-01' , 'B' )
1669
+ i1 = PeriodIndex (start = start , end = end_intv )
1670
+ assert_equal (i1 , eval (unicode (i1 )))
1671
+
1672
+ try :
1673
+ PeriodIndex (start = start )
1674
+ raise AssertionError (
1675
+ 'Must specify periods if missing start or end' )
1676
+ except ValueError :
1677
+ pass
1678
+
1679
+ # infer freq from first element
1680
+ i2 = PeriodIndex ([end_intv , Period ('2005-05-05' , 'B' )])
1681
+ assert_equal (len (i2 ), 2 )
1682
+ assert_equal (i2 [0 ], end_intv )
1683
+ assert_equal (i2 , eval (unicode (i2 )))
1684
+
1685
+ i2 = PeriodIndex (np .array ([end_intv , Period ('2005-05-05' , 'B' )]))
1686
+ assert_equal (len (i2 ), 2 )
1687
+ assert_equal (i2 [0 ], end_intv )
1688
+ assert_equal (i2 , eval (unicode (i2 )))
1689
+
1690
+ # Mixed freq should fail
1691
+ vals = [end_intv , Period ('2006-12-31' , 'w' )]
1692
+ self .assertRaises (ValueError , PeriodIndex , vals )
1693
+ vals = np .array (vals )
1694
+ self .assertRaises (ValueError , PeriodIndex , vals )
1695
+
1619
1696
def test_frame_index_to_string (self ):
1620
1697
index = PeriodIndex (['2011-1' , '2011-2' , '2011-3' ], freq = 'M' )
1621
1698
frame = DataFrame (np .random .randn (3 , 4 ), index = index )
0 commit comments