@@ -440,6 +440,32 @@ def test_metadata_propagation_indiv(self):
440
440
result = ts .resample ('1T' ,how = lambda x : x .sum ())
441
441
self .check_metadata (ts ,result )
442
442
443
+ _metadata = Series ._metadata
444
+ _finalize = Series .__finalize__
445
+ Series ._metadata = ['name' ,'filename' ]
446
+ o .filename = 'foo'
447
+ o2 .filename = 'bar'
448
+
449
+ def finalize (self , other , method = None , ** kwargs ):
450
+ for name in self ._metadata :
451
+ if method == 'concat' and name == 'filename' :
452
+ value = '+' .join ([ getattr (o ,name ) for o in other .objs if getattr (o ,name ,None ) ])
453
+ object .__setattr__ (self , name , value )
454
+ else :
455
+ object .__setattr__ (self , name , getattr (other , name , None ))
456
+
457
+ return self
458
+
459
+ Series .__finalize__ = finalize
460
+
461
+ result = pd .concat ([o , o2 ])
462
+ self .assertEquals (result .filename ,'foo+bar' )
463
+ self .assertIsNone (result .name )
464
+
465
+ # reset
466
+ Series ._metadata = _metadata
467
+ Series .__finalize__ = _finalize
468
+
443
469
def test_interpolate (self ):
444
470
ts = Series (np .arange (len (self .ts ), dtype = float ), self .ts .index )
445
471
@@ -894,6 +920,28 @@ def finalize(self, other, method=None, **kwargs):
894
920
result = df1 .merge (df2 , left_on = ['a' ], right_on = ['c' ], how = 'inner' )
895
921
self .assertEquals (result .filename ,'fname1.csv|fname2.csv' )
896
922
923
+ # concat
924
+ # GH 6927
925
+ DataFrame ._metadata = ['filename' ]
926
+ df1 = DataFrame (np .random .randint (0 , 4 , (3 , 2 )), columns = list ('ab' ))
927
+ df1 .filename = 'foo'
928
+
929
+ def finalize (self , other , method = None , ** kwargs ):
930
+ for name in self ._metadata :
931
+ if method == 'concat' :
932
+ value = '+' .join ([ getattr (o ,name ) for o in other .objs if getattr (o ,name ,None ) ])
933
+ object .__setattr__ (self , name , value )
934
+ else :
935
+ object .__setattr__ (self , name , getattr (other , name , None ))
936
+
937
+ return self
938
+
939
+ DataFrame .__finalize__ = finalize
940
+
941
+ result = pd .concat ([df1 , df1 ])
942
+ self .assertEquals (result .filename ,'foo+foo' )
943
+
944
+ # reset
897
945
DataFrame ._metadata = _metadata
898
946
DataFrame .__finalize__ = _finalize
899
947
0 commit comments