详解 Pandas 的 groupby 分组函数

一、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: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值