在Pandas DataFrame中统计指定字段重复次数并新增计数列
统计Pandas DataFrame中date与cod组合的重复次数并新增计数列
正确实现方法
要给DataFrame新增count列存储date和cod组合的重复次数,最高效的方式是利用groupby结合transform,可以为每一行匹配对应分组的计数:
示例输入DataFrame
import pandas as pd df = pd.DataFrame({ 'date': [20210127, 20210127, 20210126, 20210125], 'cod': [29, 29, 26, 26], 'type': ['A', 'B', 'C', 'D'] })
执行代码
# 方式1:基于指定字段计数 df['count'] = df.groupby(['date', 'cod'])['date'].transform('count') # 方式2:直接统计分组大小(效果一致) df['count'] = df.groupby(['date', 'cod']).transform('size')
最终结果
date cod type count 0 20210127 29 A 2 1 20210127 29 B 2 2 20210126 26 C 1 3 20210125 26 D 1
错误代码问题分析
你写的df['count'] = df.apply(lamba x: df.count() if date and cod)存在多处问题:
- 拼写错误:
lamba应为lambda - 字段引用错误:
date and cod未指定是当前行的字段,需改为x['date']和x['cod'],但即便修正,逻辑依然错误 - 计数逻辑错误:
df.count()是统计整个DataFrame的非空值数量,并非date+cod组合的重复次数 - 性能问题:
apply逐行处理的效率远低于groupby+transform,不适合此类分组计数场景
内容的提问来源于stack exchange,提问作者crist_9
相关产品推荐
相关产品推荐

