如何在 RAPIDS 中实现 SQL Groupby
How to implement SQL Groupby in RAPIDS
我正在寻求翻译 SQL 查询以使用 RAPIDS。考虑下面的简化查询:
(SELECT min(a), max(b), c
FROM T
GROUP BY c) AS result
我已经验证了下面的代码,但这是最佳解决方案吗?是否需要对组键进行排序?有没有更简洁/更惯用的写法?
from pygdf import DataFrame as gdf
T = gdf(...)
df = gdf({'a':T.a, 'c':T.c}).groupby('c').min().sort_values(by='c')
df['max_b'] = gdf({'b':T.b, 'c':T.c}).groupby('c').max().sort_values(by='c').max_b
result = gdf({'a': df.min_a, 'b': df.max_b, 'c':df.c})
您可以使用 .agg
函数重写聚合,使其更直接:
from pygdf import DataFrame as gdf
T = gdf(...)
df = gdf({'a':T.a, 'b': T.b, 'c':T.c}).groupby('c').agg({'a': 'min', 'b': 'max'})
result = gdf({'a': df.min_a, 'b': df.max_b, 'c':df.c})
您可以使用 BlazingSQL,这是一个构建在 RAPIDS 之上的 SQL 引擎。完全公开,我为 BlazingSQL.
工作
from blazingsql import BlazingContext
bc = BlazingContext()
# Create Table from GDF
bc.create_table('myTableName', gdf)
# Query
result = bc.sql('SELECT min(a), max(b), c FROM main.myTableName GROUP BY c').get()
result_gdf = result.columns
#Print GDF
print(result_gdf)
我正在寻求翻译 SQL 查询以使用 RAPIDS。考虑下面的简化查询:
(SELECT min(a), max(b), c
FROM T
GROUP BY c) AS result
我已经验证了下面的代码,但这是最佳解决方案吗?是否需要对组键进行排序?有没有更简洁/更惯用的写法?
from pygdf import DataFrame as gdf
T = gdf(...)
df = gdf({'a':T.a, 'c':T.c}).groupby('c').min().sort_values(by='c')
df['max_b'] = gdf({'b':T.b, 'c':T.c}).groupby('c').max().sort_values(by='c').max_b
result = gdf({'a': df.min_a, 'b': df.max_b, 'c':df.c})
您可以使用 .agg
函数重写聚合,使其更直接:
from pygdf import DataFrame as gdf
T = gdf(...)
df = gdf({'a':T.a, 'b': T.b, 'c':T.c}).groupby('c').agg({'a': 'min', 'b': 'max'})
result = gdf({'a': df.min_a, 'b': df.max_b, 'c':df.c})
您可以使用 BlazingSQL,这是一个构建在 RAPIDS 之上的 SQL 引擎。完全公开,我为 BlazingSQL.
工作from blazingsql import BlazingContext
bc = BlazingContext()
# Create Table from GDF
bc.create_table('myTableName', gdf)
# Query
result = bc.sql('SELECT min(a), max(b), c FROM main.myTableName GROUP BY c').get()
result_gdf = result.columns
#Print GDF
print(result_gdf)