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

如何在Pandas中对索引列应用字符串拆分并统计截断邮编计数

解决邮编前缀计数统计问题

问题分析

你当前的DataFrame由value_counts生成,索引为完整邮编,count列记录对应出现次数。之前用apply(axis=0)报错,是因为axis=0是对列执行函数,但你要处理的是行索引的字符串,且apply并非最优的矢量化操作方式。

高效解决方案

无需修改原DataFrame索引,也不用重新生成原始邮编列表,直接基于现有value_count_df做矢量化操作即可,两种方式任选:

方式1:直接操作索引分组

利用Pandas字符串矢量化方法处理索引,再按拆分后的前缀分组求和:

# 拆分索引中的邮编,取空格前的第一部分,分组统计总次数
result = value_count_df.groupby(value_count_df.index.str.split(" ").str[0])["count"].sum()

方式2:将索引转为列后处理

如果觉得操作索引不习惯,可先把索引转成普通列,处理后再分组:

# 重置索引,将邮编从索引转为列
temp_df = value_count_df.reset_index()
# 生成邮编前缀列(拆分后取第一部分)
temp_df["postcode_prefix"] = temp_df["Postcode"].str.split(" ").str[0]
# 按前缀分组求和,按需排序索引
result = temp_df.groupby("postcode_prefix")["count"].sum().sort_index()

为何之前的apply会报错?

你使用value_count_df.apply(split_postcode, axis=0)时,axis=0表示对每一列应用函数,但split_postcode是处理字符串的逻辑,而count列是数值类型,执行时会因类型不匹配抛出ValueError。此外,这种逐元素的apply效率远不如上面的矢量化分组操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:13:23