0

我对 pandas groupby 函数的行为有点困惑:

df = pd.DataFrame({"row_id":[1,2,3], "group": [1,2,2], "col1":[1,100,2], "col2":[2,200,2]})

for i, e in df.groupby("group", as_index=True):
  print(e.index)

在这里,我希望我将“组”列作为新索引。但是打印返回:

Int64Index([0], dtype='int64')
Int64Index([1, 2], dtype='int64')

因此保留了“旧”索引。此外,“组”列仍然作为单独的列存在。

不应该是这样的结果:

Int64Index([1], dtype='int64')
Int64Index([2, 2], dtype='int64')

我不明白逻辑,尤其是。因为 as_index=False 不会改变任何东西。

Ps 我正在使用熊猫 1.3.5

4

1 回答 1

2

as_index仅更改输出格式:

对于聚合输出,返回以组标签为索引的对象。仅与 DataFrame 输入相关。as_index=False 实际上是“SQL 风格”的分组输出。

>>> df.groupby('group', as_index=False).first()
   group  row_id  col1  col2
0      1       1     1     2
1      2       2   100   200

>>> df.groupby('group', as_index=True).first()
       row_id  col1  col2
group                    
1           1     1     2
2           2   100   200
于 2022-02-25T10:06:21.460 回答