1 minute read

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 .

Tags: ,

Categories:

Updated:

Leave a comment