从 groupby 转换生成数据框

Generating a dataframe from a groupby transformation

我有这个代码:

df.droupby('type)['feature1].mean()

df 有 15 features 来自 1 to 15

我想遍历功能名称列表并将这 15 个结果附加到数据框中:

期望的输出:类型(数据帧)

    type      feature1       features2  ..... feature15
    type_A    mean(float)    mean(float)      mean(float)
    type_B    mean(float)    mean(float)      mean(float)
    type_c    mean(float)    mean(float)      mean(float)

我做了什么:

我有功能列表:

list = df.iloc[:, 10:24].columns.to_list()

并尝试了这样的事情:

for i in len(list):
    df.groupby('type')[list[i]].mean()

看看我是否得到了什么,这行 returns 是一个错误:

'int' object is not iterable

谁能帮我解决这个问题?

IIUC,你可以简单地使用 groupby + mean:

out = df.groupby('type', as_index=False).mean()

但是如果您有一堆其他列不想包含在计算中并且只想要“特征...”列的平均值,您可以 filter,然后 groupby + mean:

out = df.filter(like='feature').groupby(df['type']).mean().reset_index()

输出:

  type  feature1  feature2
0    A      10.0      11.0
1    B      12.0      14.0
2    C      13.0      13.0
3    D      12.0      19.0
4    E      10.0      10.0