@@ -3540,6 +3540,64 @@ def test_pass_dtype(self):
35403540 self .assertEqual (result ['one' ].dtype , 'u1' )
35413541 self .assertEqual (result ['two' ].dtype , 'S1' )
35423542
3543+ def test_empty_pass_dtype (self ):
3544+ data = 'one,two'
3545+ result = self .read_csv (StringIO (data ), dtype = {'one' : 'u1' })
3546+
3547+ expected = DataFrame ({'one' : np .empty (0 , dtype = 'u1' ),
3548+ 'two' : np .empty (0 , dtype = np .object )})
3549+ tm .assert_frame_equal (result , expected )
3550+
3551+ def test_empty_with_index_pass_dtype (self ):
3552+ data = 'one,two'
3553+ result = self .read_csv (StringIO (data ), index_col = ['one' ],
3554+ dtype = {'one' : 'u1' , 1 : 'f' })
3555+
3556+ expected = DataFrame ({'two' : np .empty (0 , dtype = 'f' )},
3557+ index = Index ([], dtype = 'u1' , name = 'one' ))
3558+ tm .assert_frame_equal (result , expected )
3559+
3560+ def test_empty_with_multiindex_pass_dtype (self ):
3561+ data = 'one,two,three'
3562+ result = self .read_csv (StringIO (data ), index_col = ['one' , 'two' ],
3563+ dtype = {'one' : 'u1' , 1 : 'f8' })
3564+
3565+ expected = DataFrame ({'three' : np .empty (0 , dtype = np .object )}, index = MultiIndex .from_arrays (
3566+ [np .empty (0 , dtype = 'u1' ), np .empty (0 , dtype = 'O' )],
3567+ names = ['one' , 'two' ])
3568+ )
3569+ tm .assert_frame_equal (result , expected )
3570+
3571+ def test_empty_with_mangled_column_pass_dtype_by_names (self ):
3572+ data = 'one,one'
3573+ result = self .read_csv (StringIO (data ), dtype = {'one' : 'u1' , 'one.1' : 'f' })
3574+
3575+ expected = DataFrame ({'one' : np .empty (0 , dtype = 'u1' ), 'one.1' : np .empty (0 , dtype = 'f' )})
3576+ tm .assert_frame_equal (result , expected )
3577+
3578+ def test_empty_with_mangled_column_pass_dtype_by_indexes (self ):
3579+ data = 'one,one'
3580+ result = self .read_csv (StringIO (data ), dtype = {0 : 'u1' , 1 : 'f' })
3581+
3582+ expected = DataFrame ({'one' : np .empty (0 , dtype = 'u1' ), 'one.1' : np .empty (0 , dtype = 'f' )})
3583+ tm .assert_frame_equal (result , expected )
3584+
3585+ def test_empty_with_dup_column_pass_dtype_by_names (self ):
3586+ data = 'one,one'
3587+ result = self .read_csv (StringIO (data ), mangle_dupe_cols = False , dtype = {'one' : 'u1' })
3588+ expected = pd .concat ([Series ([], name = 'one' , dtype = 'u1' )] * 2 , axis = 1 )
3589+ tm .assert_frame_equal (result , expected )
3590+
3591+ def test_empty_with_dup_column_pass_dtype_by_indexes (self ):
3592+ ### FIXME in GH9424
3593+ raise nose .SkipTest ("GH 9424; known failure read_csv with duplicate columns" )
3594+
3595+ data = 'one,one'
3596+ result = self .read_csv (StringIO (data ), mangle_dupe_cols = False , dtype = {0 : 'u1' , 1 : 'f' })
3597+ expected = pd .concat ([Series ([], name = 'one' , dtype = 'u1' ),
3598+ Series ([], name = 'one' , dtype = 'f' )], axis = 1 )
3599+ tm .assert_frame_equal (result , expected )
3600+
35433601 def test_usecols_dtypes (self ):
35443602 data = """\
35453603 1,2,3
0 commit comments