You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Pandas DataFrame添加按{prop,weeknum}分组的频率列

给Pandas DataFrame按{prop, weeknum}分组添加总行数字段

嘿,这个需求用Pandas的groupby结合transform就能轻松搞定,完全能实现你要的效果——每个分组的每一行都会带上该分组的总行数。

首先,先把你提供的示例数据构造成DataFrame:

import pandas as pd

data = {
    'TransID': ['A1234', 'B234', 'C333', 'D444'],
    'prop': ['a', 'a', 'b', 'b'],
    'weeknum': [1, 1, 1, 1]
}
df = pd.DataFrame(data)

接下来就是核心操作:按prop和weeknum分组,统计每组的行数,并用transform把结果广播到原DataFrame的每一行,这里有两种简洁的写法:

# 方法1:用count(),指定任意非空列即可
df['group_count'] = df.groupby(['prop', 'weeknum'])['TransID'].transform('count')

# 方法2:用size(),更简洁,无需指定具体列
df['group_count'] = df.groupby(['prop', 'weeknum']).transform('size')

两种方法都能得到你想要的结果——新列group_count的所有值都是2,因为每个{prop, weeknum}分组都刚好有2行数据。运行后你的DataFrame会变成这样:

TransIDpropweeknumgroup_count
A1234a12
B234a12
C333b12
D444b12

这里选transform而不是其他分组方法的原因是:它会保持原DataFrame的行数,自动把分组计算的结果对应到每一行,而普通的agg只会返回每个分组的汇总结果,没法直接合并回原数据。

内容的提问来源于stack exchange,提问作者Mark Ginsburg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:01:48