在python中汇总熊猫数据时,如何计算每组尾巴的和

时间:2018-09-05 11:02:44

标签: python pandas pandas-groupby tail

我有如下数据,它是熊猫数据帧格式。

A  B  C  D  E  F  G
1  1  2  3  1  4  2
1  1  2  4  5  6  7
1  1  2  3  2  3  2
1  1  2  4  5  6  7
2  1  2  3  2  3  4
2  1  2  3  4  3  3
2  1  2  4  5  6  7

此处agg_lvl = ['A','B','C']

当数据汇总到agg_lvl时,我想通过在每个组中使用tail(2)记录来计算G变量的均值| median | sum。

我的预期输出是这样的:

预期的平均值输出:

A  B  C  G
1  1  2  4.5
2  1  2   5

中位数和总和的输出也将相同,但是要代替平均值,我们必须考虑中位数和总和。

为此,我尝试了以下代码,但未获得预期的输出。

df.groupby(agg_lvl,as_index=False).tail(2).agg({'G':'mean'})

谁能帮我解决这个问题。

谢谢。

1 个答案:

答案 0 :(得分:1)

使用GroupBy.transform代替index返回与agg过滤的DataFrame具有相同形状的新列:

tail

编辑:

agg_lvl=['A','B','C']
df = df.groupby(agg_lvl,as_index=False).tail(2)
df['G'] = df.groupby(agg_lvl)['G'].transform('mean')
print (df)
   A  B  C  D  E  F    G
2  1  1  2  3  2  3  4.5
3  1  1  2  4  5  6  4.5
5  2  1  2  3  4  3  5.0
6  2  1  2  4  5  6  5.0