Pandas DataFrame中高效统计观测值方法咨询:酒店客源国计数场景
实现方法
针对千万级数据的分组计数需求,直接使用Pandas原生向量化操作即可,性能远高于手动for循环,实现方式如下:
方法1:groupby + transform(最便捷)
直接对双字段分组后使用transform把计数映射回原DataFrame的对应行,一行代码即可完成:
import pandas as pd # 假设你的原始DataFrame变量名为df df['Count'] = df.groupby(['Hotel name', 'Country'])['Country'].transform('count')
方法2:分组映射(内存更友好)
如果内存资源紧张,可先生成分组计数字典再映射,减少中间过程的内存占用:
# 生成酒店+国家对应的计数映射表 count_map = df.groupby(['Hotel name', 'Country']).size().to_dict() # 把计数映射到原表 df['Count'] = df.set_index(['Hotel name', 'Country']).index.map(count_map)
性能说明
上述两种方法均基于Pandas底层C实现的运算逻辑,处理1000万条数据通常仅需要数秒到十余秒,比纯Python for循环效率高出数百倍。
内容的提问来源于stack exchange,提问作者Eleanor Abernathy
相关产品推荐
相关产品推荐

