Pandas Dataframe 中分组的多重聚合

Posted

技术标签:

【中文标题】Pandas Dataframe 中分组的多重聚合【英文标题】:Multiple aggregation in group by in Pandas Dataframe 【发布时间】:2016-06-24 10:33:19 【问题描述】:
SQL : Select Max(A) , Min (B) , C from Table group by C 

我想在 pandas 中对数据框执行相同的操作。我离得越近:

DF2= DF1.groupby(by=['C']).max() 

我在哪里获得两列的最大值,我如何在分组时执行多个操作。

【问题讨论】:

【参考方案1】:

你可以使用函数agg:

DF2 = DF1.groupby('C').agg('A': max, 'B': min)

示例:

print DF1
   A   B  C  D
0  1   5  a  a
1  7   9  a  b
2  2  10  c  d
3  3   2  c  c

DF2 = DF1.groupby('C').agg('A': max, 'B': min)

print DF2
   A  B
C      
a  7  5
c  3  2

GroupBy-fu: improvements in grouping and aggregating data in pandas - 很好的解释。

【讨论】:

【参考方案2】:

试试agg()函数:

import numpy as np
import pandas as pd


df = pd.DataFrame(np.random.randint(0,5,size=(20, 3)), columns=list('ABC'))
print(df)

print(df.groupby('C').agg('A': max, 'B':min))

输出:

    A  B  C
0   2  3  0
1   2  2  1
2   4  0  1
3   0  1  4
4   3  3  2
5   0  4  3
6   2  4  2
7   3  4  0
8   4  2  2
9   3  2  1
10  2  3  1
11  4  1  0
12  4  3  2
13  0  0  1
14  3  1  1
15  4  1  1
16  0  0  0
17  4  0  1
18  3  4  0
19  0  2  4
   A  B
C
0  4  0
1  4  0
2  4  2
3  0  4
4  0  1

或者你可能想检查pandas.read_sql_query()函数...

【讨论】:

【参考方案3】:

你可以使用agg函数

import pandas as pd
import numpy as np

df.groupby('something').agg('column1': np.max, 'columns2': np.min)

【讨论】:

以上是关于Pandas Dataframe 中分组的多重聚合的主要内容,如果未能解决你的问题,请参考以下文章

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用sum函数计算每个分组中的所有数值变量的聚合加和值

pandas使用groupby函数基于多个分组变量(多变量分组)对dataframe数据进行分组使用mean函数计算所有分组下数据变量的聚合平均值

pandas使用groupby函数基于多个分组变量(多变量分组)对dataframe数据进行分组使用mean函数计算所有分组下数据变量的聚合平均值

pandas使用groupby函数基于多个分组变量(多变量分组)对dataframe数据进行分组使用sum函数计算所有分组下数据变量的聚合加和值

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用agg函数计算每个分组不同数值变量的聚合统计值agg参数为字典指定不同变量的聚合计算统计量的形式

pandas使用groupby函数按照多个分组变量进行分组聚合统计使用agg函数计算分组的多个统计指标(grouping by multiple columns in dataframe)