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)