获取其他类别的聚合

2024-04-23 22:04:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试执行聚合计算,但我希望该计算适用于所有其他类别。你知道吗

所以

 df.groupby(['index']).agg({data : [func1,func2]})

将对按索引分组的数据执行聚合计算func1和func2,但我要对不在索引中的所有数据执行计算。你知道吗

例如:

index data
A      1
A      2
A      1
B      2
B      2
B      4
B      4
C      1
C      3
D      4
D      1

我希望对B,C,D中的数据执行A的结果

有没有一种新颖的方法来实现这一点?你知道吗


Tags: 数据方法dfdataindex类别agggroupby
1条回答
网友
1楼 · 发布于 2024-04-23 22:04:05

嗯,我真的想我知道了。基本上,我创建了一个新的数据帧并对其重新编制索引。你知道吗

                value
original_index       
A                  44
A                  65
A                  88
B                  69
B                  11
B                  52
C                  56
C                  42
C                  85
D                  66
D                  77
D                   9

循环遍历每个索引,并将不在该索引中的所有内容复制到新的数据帧。然后把它们连在一起。你知道吗

l = []
for i in df.index.unique():
    d = df[~df.index.isin([i])].copy()
    d['new_index'] = i
    d.drop('original_index',axis=0,inplace=True)
    d.set_index('new_index',inplace=True)
    l.append(d)
df2 = pd.concat(l,axis=0)

输出:

           value
new_index       
A             69
A             11
A             52
A             56
A             42
A             85
A             66
A             77
A              9
B             44
B             65
B             88
B             56
B             42
B             85
B             66
B             77
B              9
C             44
C             65
C             88
C             69
C             11
C             52
C             66
C             77
C              9
D             44
D             65
D             88
D             69
D             11
D             52
D             56
D             42
D             85

现在我们可以在新索引上应用groupby函数,它将从最初不在索引中的值返回结果。你知道吗

group_df = df2.groupby(['new_index']).agg({'value' :[func1,func2]})[['value']]

这很管用,但我肯定有更好的办法。你知道吗

相关问题 更多 >