python - python - 当pandas数据在python中聚合时,如何计算每组尾部的总和|平均值|中位数
问题描述
我有类似以下的数据。这是熊猫数据框格式的。
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 变量的平均值|中值|总和。
我的预期输出是这样的:
均值的预期输出:
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'})
谁能帮我解决这个问题。
提前致谢。
解决方案
GroupBy.transform
改为使用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
编辑:
df = df.groupby(agg_lvl,as_index=False).tail(2).groupby(agg_lvl,as_index=False)['G'].mean()
print (df)
A B C G
0 1 1 2 4.5
1 2 1 2 5.0
推荐阅读
- generator - '用户警告:你的发电机是空的' Fast.ai
- ubuntu - 无法使用 Let's Encrypt 在我的网站上安装 SSL
- reactjs - 我无法在我的服务器中访问具有 2 个以上嵌套 url 路径的 url
- android - 按钮中浅色背景上的深色图像问题
- php - if语句没有比较运算符只有一个相等,这是什么意思?
- python - python subprocess.check_output 无法解码
- c# - Blazor 级联值
- c# - 我可以为列表中的所有条目多线程一个函数并返回在 O(n) 中给出最大值的列表条目吗?
- r - 使用来自多个数据帧的多个条件制作 R 循环/应用()
- javascript - 使覆盖页面更难在移动设备上绕过