@@ -6154,6 +6154,48 @@ def test_append_empty_dataframe(self):
6154
6154
expected = df1 .copy ()
6155
6155
assert_frame_equal (result , expected )
6156
6156
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
+
6157
6199
def test_asfreq (self ):
6158
6200
offset_monthly = self .tsframe .asfreq (datetools .bmonthEnd )
6159
6201
rule_monthly = self .tsframe .asfreq ('BM' )
0 commit comments