我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

dataframe数据进行分组的时候,有个as_index参数。本文对这个参数进行一下简要的讨论,根据官方文档的说法,这个参数的最大的作用是控制数据输出的风格。

苏南大叔:数据清洗,如何理解groupby的as_index参数? - groupby-as_index参数
数据清洗,如何理解groupby的as_index参数?(图1-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。本文测试环境:python@3.12.3pandas@2.2.2numpy@1.26.4

前置阅读

本文强烈相关的文章有:

本文的龙套角色数据,依然是苏南大叔的宠物列表。数据如下:

import pandas as pd
df = pd.DataFrame( data = [
        ['虎子', 3, "狗"],
        ['老许', 3, "猫"],
        ['二赖子', 6, "狗"],
        ['老白', 6, "猫"],
        ['小黑', 5, "狗"],
    ],
    columns = ['name', 'age', 'category']
)
print(df)

输出:

  name  age category
0   虎子    3        狗
1   老许    3        猫
2  二赖子    6        狗
3   老白    6        猫
4   小黑    5        狗

由于本文范例数据的特殊性,使用.first()输出所有目标数据。

默认as_index为True【真正的groupby】

g0 = df.groupby(['category', 'age'])
g1 = df.groupby(['category', 'age'], as_index=True)
print(g0.first())
print(g1.first())

输出都是:

             name
category age
狗       3     虎子
         5     小黑
         6     二赖子
猫       3     老许
         6     老白

注意看:category agename,并不在一行上。前者表示的是group,后者就是传统意义上的列名。

as_index = False【sql风格输出】

什么是sql风格输出呢?个人理解就是类似sql语句的数据输出,每行上都有数据。当然,对于dataframe原始数据输出的话,这些数据是根据group排序过的,而且全部的索引值进行了重排。

g2 = df.groupby(['category', 'age'], as_index=False)
print(g2.first())

输出:

    category  age  name
0        狗    3   虎子
1        狗    5   小黑
2        狗    6   二赖子
3        猫    3   老许
4        猫    6   老白

describe()输出【不推荐】

使用.describe()输出,也可以看到两者的数据结果,是有区别的。但是得到的是统计数据,并非原始数据。

print(df.groupby(['category', 'age']).describe())

输出:

                            name
              count unique          top freq
category age
狗        3       1      1   虎子    1
          5       1      1   小黑    1
          6       1      1   二赖子  1
猫        3       1      1   老许    1
          6       1      1   老白    1
print(df.groupby(['category', 'age'], as_index=False).describe())

输出:

  category   age               name
                    count unique      top freq
0        狗   3     1      1   虎子    1
1        狗   5     1      1   小黑    1
2        狗   6     1      1   二赖子  1
3        猫   3     1      1   老许    1
4        猫   6     1      1   老白    1

结语

目前来看,as_index参数带来的数据结果表现形式,确实有所区别。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python