Pandas: Complex aggregation expressions
Note: the nested-dict form of .agg() shown below (a dict of dicts, used to
rename aggregated columns per source column) was deprecated in pandas 0.20 and
removed in pandas 0.25, so it now raises
SpecificationError: nested renamer is not supported on any current version of
pandas. See Pandas: Named
Aggregation for the
modern replacement.
>>> df = pd.DataFrame(np.random.randn(10,3),columns=list('ABC'))
>>> df['D'] = [1, 1, 1, 2, 2, 2, 3, 3, 3, 3, ]
# Define the aggregation calculations
>>> aggregations = {
# Work on the "A" column.
'A': {
'total_A': 'sum', # get the sum, and call this result 'total_A'
'average_A': 'mean', # get mean, call result 'average_A'
'num_A': 'count'
},
# Work on the "B" column.
'B': {
'max_B': 'max', # Find the max, call the result "max_B"
'min_B': 'min',
'range_B': lambda x: max(x) - min(x)
},
# Calculate two results for the 'C' column with a list of aggregation functions.
'C': ["count", "max"]
}
# Perform groupby aggregation by column "D".
>>> df.groupby('D').agg(aggregations)
B C A
min_B max_B range_B count max average_A total_A num_A
D
1 -0.986305 1.478065 2.464370 3 -0.158469 -0.516790 -1.550369 3
2 0.390151 1.661266 1.271115 3 1.150179 -0.765209 -2.295627 3
3 -0.658708 1.769680 2.428388 4 0.875891 0.007827 0.031307 4
Via shanelynn.ie .
Leave a comment