一、groupby 基本使用
import pandas as pd
# 构建dataframe数据
df = pd.DataFrame({
'name': ['三国演义', '诛仙', '凡人修仙传', '活着', '射雕英雄传', '霸道总裁爱上我', '少年歌行', '少年白马醉春风', '神雕侠侣'],
'category': ['历史', '修真', '修真', '现实', '武侠', '都市', '仙侠', '仙侠', '武侠'],
'price': [33.5, 26, 32.8, 29, 37, 25.5, 30.2, 28, 38],
'num': [2, 1, 3, 6, 4, 8, 5, 3, 2]
})
# 分组操作,使用 by 参数指定分组列
group_df = df.groupby(by="category")
print(group_df) # <pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000022484EE6610>
print(type(group_df)) # <class 'pandas.core.groupby.generic.DataFrameGroupBy'>
# DataFrame 经过分组之后得到 DataFrameGroupBy 对象
二、DataFrameGroupBy 的属性
# 循环打印 DataFrameGroupBy 的内容
for name, group in group_df:
# name 是所有分组的 key
print(name)
输出结果
仙侠
修真
历史
武侠
现实
都市
# 循环打印 DataFrameGroupBy 的内容
for name, group in group_df:
# group 是对应分组 key 的组内 DataFrame
print(group)
输出结果
name category price count
6 少年歌行 仙侠 30.2 5
7 少年白马醉春风 仙侠 28.0 3
name category price count
1 诛仙 修真 26.0 1
2 凡人修仙传 修真 32.8 3
name category price count
0 三国演义 历史 33.5 2
name category price count
4 射雕英雄传 武侠 37.0 4
8 神雕侠侣 武侠 38.0 2
name category price count
3 活着 现实 29.0 6
name category price count
5 霸道总裁爱上我 都市 25.5 8
三、groupby 的参数
def groupby(
self,
by=None, # 指定分组列,可以指定多列 [col1, col2,...]
axis: Axis | lib.NoDefault = lib.no_default, # 指定按行分组 0 或按列分组 1,默认 0
level: IndexLabel | None = None,
as_index: