关于groupby(level=0)

328 阅读1分钟

在Pandas中,groupby(level=0)是一个用于分组操作的方法,它根据索引的第一个级别(如果是多级索引)或者整数位置(如果是单级索引)进行分组。这种方法特别适用于处理多级索引的DataFrame或Series。

假设有一个多级索引的DataFrame示例:

import pandas as pd

# 创建一个多级索引的DataFrame
data = {
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
}
index = pd.MultiIndex.from_tuples([('X', 'a'), ('X', 'b'), ('Y', 'c'), ('Y', 'd'), ('Z', 'e')], names=['first', 'second'])
df = pd.DataFrame(data, index=index)
print(df)

输出如下:

             A   B
first second      
X     a      1  10
      b      2  20
Y     c      3  30
      d      4  40
Z     e      5  50

现在,我们可以使用groupby(level=0)来按第一个级别('first')进行分组,并对每个分组进行汇总操作(例如求和):

grouped = df.groupby(level=0).sum()
print(grouped)

输出结果为:

        A   B
first        
X       3  30
Y       7  70
Z       5  50

解释一下上述操作:

  • groupby(level=0)表示按照第一个级别('first')进行分组。
  • .sum()是对每个分组求和操作,这里是对每个分组的'A'和'B'列求和。

因此,groupby(level=0)的作用是将具有多级索引的DataFrame按照第一个级别进行分组,然后可以对分组后的数据进行聚合操作,如求和、计数、平均值等。