@@ -6154,6 +6154,48 @@ def test_append_empty_dataframe(self):
61546154 expected = df1 .copy ()
61556155 assert_frame_equal (result , expected )
61566156
6157+ def test_append_dtypes (self ):
6158+
6159+ # GH 5754
6160+ # row appends of different dtypes (so need to do by-item)
6161+ # can sometimes infer the correct type
6162+
6163+ df1 = DataFrame ({ 'bar' : Timestamp ('20130101' ) }, index = lrange (5 ))
6164+ df2 = DataFrame ()
6165+ result = df1 .append (df2 )
6166+ expected = df1 .copy ()
6167+ assert_frame_equal (result , expected )
6168+
6169+ df1 = DataFrame ({ 'bar' : Timestamp ('20130101' ) }, index = lrange (1 ))
6170+ df2 = DataFrame ({ 'bar' : 'foo' }, index = lrange (1 ,2 ))
6171+ result = df1 .append (df2 )
6172+ expected = DataFrame ({ 'bar' : [ Timestamp ('20130101' ), 'foo' ]})
6173+ assert_frame_equal (result , expected )
6174+
6175+ df1 = DataFrame ({ 'bar' : Timestamp ('20130101' ) }, index = lrange (1 ))
6176+ df2 = DataFrame ({ 'bar' : np .nan }, index = lrange (1 ,2 ))
6177+ result = df1 .append (df2 )
6178+ expected = DataFrame ({ 'bar' : Series ([ Timestamp ('20130101' ), np .nan ],dtype = 'M8[ns]' ) })
6179+ assert_frame_equal (result , expected )
6180+
6181+ df1 = DataFrame ({ 'bar' : Timestamp ('20130101' ) }, index = lrange (1 ))
6182+ df2 = DataFrame ({ 'bar' : np .nan }, index = lrange (1 ,2 ), dtype = object )
6183+ result = df1 .append (df2 )
6184+ expected = DataFrame ({ 'bar' : Series ([ Timestamp ('20130101' ), np .nan ],dtype = 'M8[ns]' ) })
6185+ assert_frame_equal (result , expected )
6186+
6187+ df1 = DataFrame ({ 'bar' : np .nan }, index = lrange (1 ))
6188+ df2 = DataFrame ({ 'bar' : Timestamp ('20130101' ) }, index = lrange (1 ,2 ))
6189+ result = df1 .append (df2 )
6190+ expected = DataFrame ({ 'bar' : Series ([ np .nan , Timestamp ('20130101' )] ,dtype = 'M8[ns]' ) })
6191+ assert_frame_equal (result , expected )
6192+
6193+ df1 = DataFrame ({ 'bar' : Timestamp ('20130101' ) }, index = lrange (1 ))
6194+ df2 = DataFrame ({ 'bar' : 1 }, index = lrange (1 ,2 ), dtype = object )
6195+ result = df1 .append (df2 )
6196+ expected = DataFrame ({ 'bar' : Series ([ Timestamp ('20130101' ), 1 ]) })
6197+ assert_frame_equal (result , expected )
6198+
61576199 def test_asfreq (self ):
61586200 offset_monthly = self .tsframe .asfreq (datetools .bmonthEnd )
61596201 rule_monthly = self .tsframe .asfreq ('BM' )
0 commit comments