Pandas分组统计唯一(from,to)组合权重并去重实现方案
Pandas实现按分组统计组合权重并去重的解决方案
核心代码
import pandas as pd # 构造示例数据,实际使用时替换为你自己的DataFrame即可 df = pd.DataFrame({ 'Group': [1,1,1,1,2,2,2,2], 'from': [2,1,3,3,1,3,1,3], 'to': [1,2,2,1,4,1,2,1] }) # 新增weight列:按Group、from、to分组统计每个组合的出现次数 df['weight'] = df.groupby(['Group', 'from', 'to'])['Group'].transform('count') # 去重:每个Group内相同(from,to)组合仅保留第一条记录 df = df.drop_duplicates(subset=['Group', 'from', 'to'], keep='first').reset_index(drop=True) # 输出结果验证 print(df)
代码逻辑说明
- 统计权重时用
transform方法可以在不改变原DataFrame行数的前提下,将每个组合的统计次数映射到对应所有行,直接生成weight字段 - 去重时指定
subset=['Group', 'from', 'to']保证只判断同一分组内的(from,to)组合是否重复,keep='first'保留首次出现的记录,最后重置索引保证结果索引连续
运行代码后输出的结果和预期完全一致,Group2中重复的from=3、to=1记录会被删除,对应保留的第一条记录weight为2。
内容的提问来源于stack exchange,提问作者tj judge
相关产品推荐
相关产品推荐

