@@ -8133,12 +8133,43 @@ def test_constructor_with_datetimes(self):
81338133 expected .sort ()
81348134 assert_series_equal (result , expected )
81358135
8136- # GH #2751 (construction with no index specified)
8137- df = DataFrame ({'a' :[1 ,2 ,4 ,7 ], 'b' :[1.2 , 2.3 , 5.1 , 6.3 ], 'c' :list ('abcd' ), 'd' :[datetime (2000 ,1 ,1 ) for i in range (4 )] })
8136+ def test_constructor_for_list_with_dtypes (self ):
8137+ intname = np .dtype (np .int_ ).name
8138+ floatname = np .dtype (np .float_ ).name
8139+ datetime64name = np .dtype ('M8[ns]' ).name
8140+ objectname = np .dtype (np .object_ ).name
8141+
8142+ # test list of lists/ndarrays
8143+ df = DataFrame ([np .arange (5 ) for x in range (5 )])
8144+ result = df .get_dtype_counts ()
8145+ expected = Series ({'int64' : 5 })
8146+
8147+ df = DataFrame ([np .array (np .arange (5 ),dtype = 'int32' ) for x in range (5 )])
8148+ result = df .get_dtype_counts ()
8149+ expected = Series ({'int32' : 5 })
8150+
8151+ # overflow issue? (we always expecte int64 upcasting here)
8152+ df = DataFrame ({'a' : [2 ** 31 ,2 ** 31 + 1 ]})
8153+ result = df .get_dtype_counts ()
8154+ expected = Series ({'int64' : 1 })
8155+ assert_series_equal (result , expected )
8156+
8157+ # GH #2751 (construction with no index specified), make sure we cast to platform values
8158+ df = DataFrame ([1 , 2 ])
8159+ result = df .get_dtype_counts ()
8160+ expected = Series ({'int64' : 1 })
8161+ assert_series_equal (result , expected )
8162+
8163+ df = DataFrame ({'a' : [1 , 2 ]})
8164+ result = df .get_dtype_counts ()
8165+ expected = Series ({'int64' : 1 })
8166+ assert_series_equal (result , expected )
8167+
8168+ df = DataFrame ({'a' :[1 ,2 ,4 ,7 ], 'b' :[1.2 , 2.3 , 5.1 , 6.3 ],
8169+ 'c' :list ('abcd' ), 'd' :[datetime (2000 ,1 ,1 ) for i in range (4 )],
8170+ 'e' : [1. ,2 ,4. ,7 ]})
81388171 result = df .get_dtype_counts ()
8139- # TODO: fix this on 32-bit (or decide it's ok behavior?)
8140- # expected = Series({intname: 1, floatname : 1, datetime64name: 1, objectname : 1})
8141- expected = Series ({'int64' : 1 , floatname : 1 , datetime64name : 1 , objectname : 1 })
8172+ expected = Series ({'int64' : 1 , 'float64' : 2 , datetime64name : 1 , objectname : 1 })
81428173 result .sort ()
81438174 expected .sort ()
81448175 assert_series_equal (result , expected )
0 commit comments