如何在R中创建按查询条件求和的计算变量querySum?
实现DataFrame按query分组求和并新增列的方法
嘿,这个需求用pandas处理起来特别顺手!我给你分享两种常用的实现方式,都能完美得到你想要的结果:
方法一:groupby() + transform()(推荐)
这是最简洁高效的方式,transform()会把分组聚合后的结果自动匹配回原DataFrame的每一行,不用手动做合并:
import pandas as pd # 构造你的原始数据 data = { 'query': ['apples', 'oranges', 'apples', 'bananas', 'apples'], 'page': ['/apples', '/oranges', '/bad-apples', '/bananas', '/all-fruits'], 'clicks': [50, 25, 40, 25, 10] } df = pd.DataFrame(data) # 新增querySum列:按query分组后对clicks求和,再广播到每一行 df['querySum'] = df.groupby('query')['clicks'].transform('sum') print(df)
运行后就会得到你想要的结果:
query page clicks querySum 0 apples /apples 50 100 1 oranges /oranges 25 25 2 apples /bad-apples 40 100 3 bananas /bananas 25 25 4 apples /all-fruits 10 100
方法二:先计算分组总和再合并
如果你想更清晰地看到分组求和的过程,可以先单独算出每个query的总点击量,再通过merge()合并回原DataFrame:
# 计算每个query的总点击量 query_totals = df.groupby('query')['clicks'].sum().reset_index(name='querySum') # 合并回原DataFrame df = df.merge(query_totals, on='query', how='left') print(df)
这种方法逻辑更直观,适合刚接触pandas的朋友理解分组和合并的流程,结果和第一种方法完全一致。
内容的提问来源于stack exchange,提问作者Jeff Swanson
相关产品推荐
相关产品推荐

