Dataframeg groupby分组统计结果转换成Dataframe,再修改其索引

pandas提供了groupby函数可以对数据集按一个键或多个键进行分组统计。
groupby分组函数:返回一个重构的dataframe,数据的原索引会保留,但数据的相对位置会发生变化。
下面以一组数据为例:

import pandas as pd
import numpy as np
# 创建dataframe
data = pd.DataFrame({"key": list("abbcaabac"),
                     "value": [1, 2, 3, 4, 5, 6, 7, 8, 9]})

print(data)

输出结果如下:
Dataframeg groupby分组统计结果转换成Dataframe,再修改其索引
下面按key进行分组

# 按key分组
data_group = data.groupby(data["key"])
# 分组后的结果不能直接输出
print(data_group)    # 输出的是data_group的类型

可以使用循环对分组后的结果进行遍历

for key, value in data_group:
    print(key)
    print(value)
    print(type(value))

结果如下:
Dataframeg groupby分组统计结果转换成Dataframe,再修改其索引
分组后的组名分别是a, b, c;直接用类型转换data_group转变成dataframe不太容易。每一个value都是dataframe类型,可以把每个value进行拼接形成新的dataframe,列名与原数据相同。

new_data = pd.DataFrame(columns=["key", "value"])
print(new_data)

通过循环,对value进行拼接。

# 循环拼接
for key, value in data_group:
    new_data = pd.concat([new_data, value])
print(new_data)

结果如下:
Dataframeg groupby分组统计结果转换成Dataframe,再修改其索引在原始数据上实现了分组,但是原索引得到了保留,可以通过以下代码改变索引。

new_data.index = np.arange(len(new_data.index))
print(new_data)

结果可以看到数据变为有序:
Dataframeg groupby分组统计结果转换成Dataframe,再修改其索引