Pandas数据帧动态子组操作

2024-10-03 21:25:46 发布

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

我有一个“Perf”数据帧,其中包含了一段时间内的人员绩效数据。 索引是一个timstamp,列是人名。 共有100人(列),每个人属于10个小组中的一个,但是小组分配是动态的,每天每个人都可以被分配到不同的组。 因此,第二个“Group”数据帧的形状与“Perf”相同,其中包含每个时间戳和个人的组号(0-9)。在

问题是我如何才能优雅地为每个人做一个关于小组作业的平均减法? 一种非常慢的方法是:

for g in range(10):
    Perf[Group==g] -= Perf[Group==g].mean(1)

但这真的很慢,我相信有一种方法可以在熊猫身上一次性完成。在

下面是一个具体的例子:

分数代表每人10天(0-9)的得分(0-4):

在[8]:perf=数据帧(np.随机.randn(10,5)

在[9]:性能

出[9]:

^{pr2}$

然后我有一些分组数据帧,每天显示5个人中每个人的组关联,分组每天都在变化。在

In [20]: grouping 

Out[20]: 

  0 1 2 3 4 

0 3 1 2 1 2 

1 3 1 2 2 1 

2 2 2 3 1 1 

3 1 2 2 3 1 

4 3 2 1 2 1 

5 2 1 1 2 3 

6 1 2 1 2 3 

7 2 2 1 1 3 

8 2 1 2 1 3 

9 1 3 2 1 2

我想修改Perf,这样我就可以每天减去每个人组的平均分。在

例如,对于第0天,它将是0.0-0.613356 1.206597 0.613356-1.206597

我想在一行没有循环。Groupby似乎是要使用的函数,但我无法有效地利用它的输出对原始矩阵执行均值减法运算。在


Tags: 数据方法infor人员作业时间group