Skip to content

Commit 8818b31

Browse files
Dieter Vandenbusschewesm
Dieter Vandenbussche
authored andcommitted
Add unittests for DataFrame masked array constructor
1 parent b63afe8 commit 8818b31

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

pandas/tests/test_frame.py

+59
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from numpy import random, nan
1111
from numpy.random import randn
1212
import numpy as np
13+
import numpy.ma as ma
1314

1415
import pandas.core.common as common
1516
import pandas.core.datetools as datetools
@@ -1040,6 +1041,64 @@ def test_constructor_ndarray(self):
10401041
frame = DataFrame(np.empty((3, 0)))
10411042
self.assert_(len(frame.columns) == 0)
10421043

1044+
def test_constructor_maskedarray(self):
1045+
mat = ma.masked_all((2, 3), dtype=float)
1046+
1047+
# 2-D input
1048+
frame = DataFrame(mat, columns=['A', 'B', 'C'], index=[1, 2])
1049+
1050+
self.assertEqual(len(frame.index), 2)
1051+
self.assertEqual(len(frame.columns), 3)
1052+
self.assertTrue(np.all(~np.asarray(frame == frame)))
1053+
1054+
# cast type
1055+
frame = DataFrame(mat, columns=['A', 'B', 'C'],
1056+
index=[1, 2], dtype=int)
1057+
self.assert_(frame.values.dtype == np.int64)
1058+
1059+
# Check non-masked values
1060+
mat2 = ma.copy(mat)
1061+
mat2[0,0] = 1.0
1062+
mat2[1,2] = 2.0
1063+
frame = DataFrame(mat2, columns=['A', 'B', 'C'], index=[1, 2])
1064+
self.assertEqual(1.0, frame['A'][1])
1065+
self.assertEqual(2.0, frame['C'][2])
1066+
1067+
# 1-D input
1068+
frame = DataFrame(ma.masked_all((3,)), columns=['A'], index=[1, 2, 3])
1069+
self.assertEqual(len(frame.index), 3)
1070+
self.assertEqual(len(frame.columns), 1)
1071+
self.assertTrue(np.all(~np.asarray(frame == frame)))
1072+
1073+
# higher dim raise exception
1074+
self.assertRaises(Exception, DataFrame, ma.masked_all((3, 3, 3)),
1075+
columns=['A', 'B', 'C'], index=[1])
1076+
1077+
# wrong size axis labels
1078+
self.assertRaises(Exception, DataFrame, mat,
1079+
columns=['A', 'B', 'C'], index=[1])
1080+
1081+
self.assertRaises(Exception, DataFrame, mat,
1082+
columns=['A', 'B'], index=[1, 2])
1083+
1084+
# automatic labeling
1085+
frame = DataFrame(mat)
1086+
self.assert_(np.array_equal(frame.index, range(2)))
1087+
self.assert_(np.array_equal(frame.columns, range(3)))
1088+
1089+
frame = DataFrame(mat, index=[1, 2])
1090+
self.assert_(np.array_equal(frame.columns, range(3)))
1091+
1092+
frame = DataFrame(mat, columns=['A', 'B', 'C'])
1093+
self.assert_(np.array_equal(frame.index, range(2)))
1094+
1095+
# 0-length axis
1096+
frame = DataFrame(ma.masked_all((0, 3)))
1097+
self.assert_(frame.index is NULL_INDEX)
1098+
1099+
frame = DataFrame(ma.masked_all((3, 0)))
1100+
self.assert_(len(frame.columns) == 0)
1101+
10431102
def test_constructor_corner(self):
10441103
df = DataFrame(index=[])
10451104
self.assertEqual(df.values.shape, (0, 0))

0 commit comments

Comments
 (0)