如何将统计域名次数的DataFrame Lambda函数转为常规Python函数?
解决方案
函数设计与实现
你需要的get_domain_count()函数可按以下方式实现,核心是先批量统计域名频次再映射回原数据,比逐行apply效率更高:
import pandas as pd def get_domain_count(df, domain_col='domain'): # 统计每个域名的出现次数 domain_freq = df[domain_col].value_counts() # 将频次映射到原DataFrame的每一行,生成count列 df['count'] = df[domain_col].map(domain_freq) return df
参数说明
df: 待处理的原始Pandas DataFramedomain_col(可选): 存储域名的列名,默认值为'domain',适配你的示例场景
使用示例
以你提供的初始数据为例:
# 创建初始DataFrame raw_data = {'domain': ['target.com', 'macys.com', 'target.com', 'walmart.com', 'walmart.com', 'target.com']} df = pd.DataFrame(raw_data) # 调用函数处理 processed_df = get_domain_count(df) # 查看结果 print(processed_df)
输出结果与你的需求完全匹配:
| domain | count |
|---|---|
| target.com | 3 |
| macys.com | 1 |
| target.com | 3 |
| walmart.com | 2 |
| walmart.com | 2 |
| target.com | 3 |
优势说明
- 性能更优:
value_counts()+map()是Pandas向量化操作,相比逐行apply,处理大数据量时速度提升显著 - 灵活性强:如果你的域名列名不是
'domain',只需传入domain_col参数即可适配
内容的提问来源于stack exchange,提问作者codingrainha
相关产品推荐
相关产品推荐

