@@ -8133,12 +8133,43 @@ def test_constructor_with_datetimes(self):
8133
8133
expected .sort ()
8134
8134
assert_series_equal (result , expected )
8135
8135
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 ]})
8138
8171
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 })
8142
8173
result .sort ()
8143
8174
expected .sort ()
8144
8175
assert_series_equal (result , expected )
0 commit comments