@@ -942,16 +942,26 @@ def get_iterator(self, data, axis=0):
942
942
Generator yielding sequence of (name, subsetted object)
943
943
for each group
944
944
"""
945
- if axis == 1 :
946
- raise NotImplementedError
945
+ if axis == 0 :
946
+ start = 0
947
+ for edge , label in izip (self .bins , self .binlabels ):
948
+ yield label , data [start :edge ]
949
+ start = edge
950
+
951
+ if edge < len (data ):
952
+ yield self .binlabels [- 1 ], data [edge :]
953
+ else :
954
+ start = 0
955
+ for edge , label in izip (self .bins , self .binlabels ):
956
+ inds = range (start , edge )
957
+ yield label , data .take (inds , axis = axis )
958
+ start = edge
947
959
948
- start = 0
949
- for edge , label in izip ( self . bins , self . binlabels ) :
950
- yield label , data [ start : edge ]
951
- start = edge
960
+ n = len ( data . axes [ axis ])
961
+ if edge < n :
962
+ inds = range ( edge , n )
963
+ yield self . binlabels [ - 1 ], data . take ( inds , axis = axis )
952
964
953
- if edge < len (data ):
954
- yield self .binlabels [- 1 ], data [edge :]
955
965
956
966
def apply (self , f , data , axis = 0 , keep_internal = False ):
957
967
result_keys = []
@@ -1652,8 +1662,9 @@ def _aggregate_generic(self, func, *args, **kwargs):
1652
1662
result = {}
1653
1663
if axis != obj ._het_axis :
1654
1664
try :
1655
- for name in self .indices :
1656
- data = self .get_group (name , obj = obj )
1665
+ for name , data in self :
1666
+ # for name in self.indices:
1667
+ # data = self.get_group(name, obj=obj)
1657
1668
result [name ] = func (data , * args , ** kwargs )
1658
1669
except Exception :
1659
1670
return self ._aggregate_item_by_item (func , * args , ** kwargs )
@@ -1993,13 +2004,22 @@ def aggregate(self, arg, *args, **kwargs):
1993
2004
return self ._aggregate_generic (arg , * args , ** kwargs )
1994
2005
1995
2006
def _wrap_generic_output (self , result , obj ):
1996
- new_axes = list (obj .axes )
1997
- new_axes [self .axis ] = self .grouper .result_index
2007
+ if self .axis == 0 :
2008
+ new_axes = list (obj .axes )
2009
+ new_axes [0 ] = self .grouper .result_index
2010
+ elif self .axis == 1 :
2011
+ x , y , z = obj .axes
2012
+ new_axes = [self .grouper .result_index , z , x ]
2013
+ else :
2014
+ x , y , z = obj .axes
2015
+ new_axes = [self .grouper .result_index , y , x ]
1998
2016
1999
2017
result = Panel ._from_axes (result , new_axes )
2000
2018
2001
- if self .axis > 0 :
2002
- result = result .swapaxes (0 , self .axis )
2019
+ if self .axis == 1 :
2020
+ result = result .swapaxes (0 , 1 ).swapaxes (0 , 2 )
2021
+ elif self .axis == 2 :
2022
+ result = result .swapaxes (0 , 2 )
2003
2023
2004
2024
return result
2005
2025
0 commit comments