@@ -716,7 +716,8 @@ def aggregate(self, func_or_funcs, *args, **kwargs):
716
716
except Exception :
717
717
result = self ._aggregate_named (func_or_funcs , * args , ** kwargs )
718
718
719
- ret = Series (result )
719
+ index = Index (sorted (result ), name = self .groupings [0 ].name )
720
+ ret = Series (result , index = index )
720
721
721
722
if not self .as_index : # pragma: no cover
722
723
print 'Warning, ignoring as_index=True'
@@ -728,12 +729,8 @@ def _wrap_aggregated_output(self, output, mask):
728
729
# sort of a kludge
729
730
output = output [self .name ]
730
731
731
- if len (self .groupings ) > 1 :
732
- index = self ._get_multi_index (mask )
733
- return Series (output , index = index )
734
- else :
735
- name_list = self ._get_names ()
736
- return Series (output , index = name_list [0 ][1 ])
732
+ index = self ._get_multi_index (mask )
733
+ return Series (output , index = index )
737
734
738
735
def _wrap_applied_output (self , keys , values , not_indexed_same = False ):
739
736
if len (keys ) == 0 :
@@ -972,11 +969,17 @@ def _aggregate_generic(self, func, *args, **kwargs):
972
969
wrapper = lambda x : func (x , * args , ** kwargs )
973
970
result [name ] = data .apply (wrapper , axis = axis )
974
971
972
+ index_name = (self .groupings [0 ].name
973
+ if len (self .groupings ) == 1 else None )
974
+ result_index = Index (sorted (result ), name = index_name )
975
+
975
976
if result :
976
977
if axis == 0 :
977
- result = DataFrame (result , index = obj .columns ).T
978
+ result = DataFrame (result , index = obj .columns ,
979
+ columns = result_index ).T
978
980
else :
979
- result = DataFrame (result , index = obj .index )
981
+ result = DataFrame (result , index = obj .index ,
982
+ columns = result_index )
980
983
else :
981
984
result = DataFrame (result )
982
985
@@ -1022,24 +1025,15 @@ def _wrap_aggregated_output(self, output, mask):
1022
1025
else :
1023
1026
output_keys = agg_labels
1024
1027
1025
- if len (self .groupings ) > 1 :
1026
- if not self .as_index :
1027
- result = DataFrame (output , columns = output_keys )
1028
- group_levels = self ._get_group_levels (mask )
1029
- for i , (name , labels ) in enumerate (group_levels ):
1030
- result .insert (i , name , labels )
1031
- result = result .consolidate ()
1032
- else :
1033
- index = self ._get_multi_index (mask )
1034
- result = DataFrame (output , index = index , columns = output_keys )
1028
+ if not self .as_index :
1029
+ result = DataFrame (output , columns = output_keys )
1030
+ group_levels = self ._get_group_levels (mask )
1031
+ for i , (name , labels ) in enumerate (group_levels ):
1032
+ result .insert (i , name , labels )
1033
+ result = result .consolidate ()
1035
1034
else :
1036
- name_list = self ._get_names ()
1037
- name , labels = name_list [0 ]
1038
- if not self .as_index :
1039
- result = DataFrame (output , columns = output_keys )
1040
- result .insert (0 , name , labels )
1041
- else :
1042
- result = DataFrame (output , index = labels , columns = output_keys )
1035
+ index = self ._get_multi_index (mask )
1036
+ result = DataFrame (output , index = index , columns = output_keys )
1043
1037
1044
1038
if self .axis == 1 :
1045
1039
result = result .T
0 commit comments