Pandas 相同键行(不包括表中的某些列)的平均值
我有一个表,其中有一部分列作为记录键。 记录键可能有重复项,例如多行可能有相同的键,但值不同。我想将同一关键行的值平均化为一行。但有些列有表示类别的数字,我想从平均值中排除它们,而是选择一个随机值Pandas 相同键行(不包括表中的某些列)的平均值,pandas,Pandas,我有一个表,其中有一部分列作为记录键。 记录键可能有重复项,例如多行可能有相同的键,但值不同。我想将同一关键行的值平均化为一行。但有些列有表示类别的数字,我想从平均值中排除它们,而是选择一个随机值 作为一个例子,考虑该表具有键 K1 < /代码>和 K2 < /代码>,数值 V1 < /代码>和分类int值 ID>代码> < /P> k1 | k2 | v1 | id 1 | 2 | 4 | 100 1 | 3 | 2 | 200 1 | 2 | 8 | 300 1 | 2
作为一个例子,考虑该表具有键<代码> K1 < /代码>和<代码> K2 < /代码>,数值<代码> V1 < /代码>和分类int值<代码> ID>代码> < /P>
k1 | k2 | v1 | id
1 | 2 | 4 | 100
1 | 3 | 2 | 200
1 | 2 | 8 | 300
1 | 2 | 2 | 400
我希望输出是
k1 | k2 | v1 | id
1 | 2 |14/3| 100 (or 300 or 400)
1 | 3 | 2 | 200
目前,我有一个代码来平均相同键列的值:
g = table.groupby(primary_keys)
s = g.sum()
table = s.div(g.count(), axis=0)
但我不知道如何扩展它以排除分类列(比如我知道它们是什么)并为分类选择随机值
df.groupby(['k1','k2']).agg({'v1':'mean','id':lambda x : x.sample(1)})
v1 id
k1 k2
1 2 4.666667 100
3 2.000000 200
4+8+2的平均成绩是多少?@WeNYoBen是的,对不起,错了。。我最初想为同一个键lol创建两行。