pandas groupby 数据聚合与分组
groupby语法
df.groupby(
by=None,
axis=0,
level=None,
as_index: bool = True,
sort: bool = True,
group_keys: bool = True,
squeeze: bool = False,
observed: bool = False,
)
GroupBy 四种分组键
DataFrame列名的值
- 其中列名可以是一个单列名,也可以是一个包含多列名的数组
- 列名变成分组后index行索引的名字
- as_index设成False的时候,禁用分组键作为行索引
可以将分组轴向上的值和分组名称相匹配的字典或者Series
Series
字典
字典中的键不需要包含所有的index,也可以包含index中没有的键
与需要分组的轴向长度一致的值列表或者值数组
- 当使用值列表时,分组的index不再有默认名字
可以在轴索引或者索引中的单个标签上调用的函数
作为分组键传递的函数将会按照每个索引值调用一次,同时返回值会被用作分组名称。
groupby().get_group()
pandas按照列groupby后,可以按照值取对应的group。
当对多列进行groupby时,get_group时需要输入多列值的tuple,比如get_group((‘a’, 1)),其中’a’为第一个group列中的某个值,1为第二个group列中的某个值。
import pandas as pd
df = pd.DataFrame({'col1':['a', 'b', 'c','a', 'b', 'c'], 'col2':[1,2,3,4,5,6]})
df
>>> col1 col2
0 a 1
1 b 2
2 c 3
3 a 4
4 b 5
5 c 6
df.groupby('col1').get_group('a')
>>> col1 col2
0 a 1
3 a 4
df.groupby(['col1', 'col2']).get_group(('a', 1))
>>> col1 col2
0 a 1