【发布时间】:2016-02-17 05:44:37
【问题描述】:
假设您有以下 SQL 表:
A B C
2 1 4
3 4 5
3 1 1
1 4 0
5 0 1
并且您想要为 B 列的每个不同值添加/显示包含 A 列平均值(或任何其他聚合函数)的列。您想要保留所有列。所以结果应该是这样的:
A B C avg(A)|B
2 1 4 2.5
3 4 5 2.0
3 1 1 2.5
1 4 0 2.0
5 0 1 5.0
据我所知,在 pandas 中做到这一点的最佳方法是:
>>> df['avg(A)|B'] = df.groupby('B')['A'].transform('mean')
>>> df
A B C avg(A)|B
0 2 1 4 2.5
1 3 4 5 2.0
2 3 1 1 2.5
3 1 4 0 2.0
4 5 0 1 5.0
您将如何在 SQL 中执行此操作?可以避免使用 JOIN 吗?
【问题讨论】:
-
你为什么要避免加入?即使在后台熊猫也会加入:)
-
@WoodChopper 使用子查询或窗口函数的 FuzzyTree 查询不是比连接更有效吗?