问题
I want to compute the mean of the absolute value of a grouped object.
I.e.
grouped = df.groupby([pd.TimeGrouper(3MS)])
dct['x'] = grouped['profit'].agg('mean') / grouped['cost'].abs().agg('mean')
However, the above code results in an error. I have tried various variants of the above code but so far all result in errors.
There must be a simple way to do this.
Update:
This is the dataframe that is grouped vi pd.TimeGrouper(3MS). I want to take the absolute value of column cost 1, and then compute the mean.
cost1 cost2 cost3 cost4
date
2016-03-31 -490.60 -118.10 -344.87 -91.44
2016-04-30 -188.74 -55.99 -259.23 -75.16
2016-05-31 -158.62 -43.58 -176.37 -21.98
I tried to do grouped['cost1'].abs().mean()
but I got:
/Users/User1/anaconda/lib/python2.7/site-packages/pandas/core/groupby.pyc in __getattr__(self, attr)
493 return self[attr]
494 if hasattr(self.obj, attr):
--> 495 return self._make_wrapper(attr)
496
497 raise AttributeError("%r object has no attribute %r" %
/Users/User1/anaconda/lib/python2.7/site-packages/pandas/core/groupby.pyc in _make_wrapper(self, name)
507 "using the 'apply' method".format(kind, name,
508 type(self).__name__))
--> 509 raise AttributeError(msg)
510
511 # need to setup the selection
AttributeError: ("Cannot access callable attribute 'abs' of 'SeriesGroupBy' objects, try using the 'apply' method", u'occurred at index 0')
回答1:
Based on your update, I think you are looking for one mean taken on absolute values for the group.
Using grouped.apply(abs).mean()
will apply the abs
function to values in your group (cost1
etc), and the mean
will give you the average for whatever your grouping variable is.
You could also just apply the abs
function before grouping, and then use the mean
function directly.
回答2:
You're probably getting the error because you can't use .agg
on a Sereis object.
You didn't post your grouped object so I don't know if there are other issues but you should try it this way. I think this should work:
dct['x'] = grouped['profit'].mean() / grouped['cost'].abs().mean()
来源:https://stackoverflow.com/questions/38193583/mean-of-absolute-value-of-groupby-object-pandas