@@ -226,3 +226,49 @@ def test_dtype_with_converter(self):
226
226
converters = {'a' : lambda x : str (x )})
227
227
expected = DataFrame ({'a' : ['1.1' , '1.2' ], 'b' : [2.2 , 2.3 ]})
228
228
tm .assert_frame_equal (result , expected )
229
+
230
+ def test_empty_dtype (self ):
231
+ # see gh-14712
232
+ data = 'a,b'
233
+
234
+ expected = pd .DataFrame (columns = ['a' , 'b' ], dtype = np .float64 )
235
+ result = self .read_csv (StringIO (data ), header = 0 , dtype = np .float64 )
236
+ tm .assert_frame_equal (result , expected )
237
+
238
+ expected = pd .DataFrame ({'a' : pd .Categorical ([]),
239
+ 'b' : pd .Categorical ([])},
240
+ index = [])
241
+ result = self .read_csv (StringIO (data ), header = 0 ,
242
+ dtype = 'category' )
243
+ tm .assert_frame_equal (result , expected )
244
+
245
+ expected = pd .DataFrame (columns = ['a' , 'b' ], dtype = 'datetime64[ns]' )
246
+ result = self .read_csv (StringIO (data ), header = 0 ,
247
+ dtype = 'datetime64[ns]' )
248
+ tm .assert_frame_equal (result , expected )
249
+
250
+ expected = pd .DataFrame ({'a' : pd .Series ([], dtype = 'timedelta64[ns]' ),
251
+ 'b' : pd .Series ([], dtype = 'timedelta64[ns]' )},
252
+ index = [])
253
+ result = self .read_csv (StringIO (data ), header = 0 ,
254
+ dtype = 'timedelta64[ns]' )
255
+ tm .assert_frame_equal (result , expected )
256
+
257
+ expected = pd .DataFrame (columns = ['a' , 'b' ])
258
+ expected ['a' ] = expected ['a' ].astype (np .float64 )
259
+ result = self .read_csv (StringIO (data ), header = 0 ,
260
+ dtype = {'a' : np .float64 })
261
+ tm .assert_frame_equal (result , expected )
262
+
263
+ expected = pd .DataFrame (columns = ['a' , 'b' ])
264
+ expected ['a' ] = expected ['a' ].astype (np .float64 )
265
+ result = self .read_csv (StringIO (data ), header = 0 ,
266
+ dtype = {0 : np .float64 })
267
+ tm .assert_frame_equal (result , expected )
268
+
269
+ expected = pd .DataFrame (columns = ['a' , 'b' ])
270
+ expected ['a' ] = expected ['a' ].astype (np .int32 )
271
+ expected ['b' ] = expected ['b' ].astype (np .float64 )
272
+ result = self .read_csv (StringIO (data ), header = 0 ,
273
+ dtype = {'a' : np .int32 , 1 : np .float64 })
274
+ tm .assert_frame_equal (result , expected )
0 commit comments