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

如何高效删除Pandas Multi-Index各级标签中不需要的日文字符

多层索引日文字符清理方案

核心思路是通过正则匹配日文字符的Unicode编码范围,批量替换所有层级索引标签中的日文字符,全程使用Pandas原生操作保证效率。

1. 导入依赖

import pandas as pd
import re

2. 定义日文字符匹配正则

根据需要清理的日文类型调整匹配范围,常用覆盖范围如下:

# 匹配范围:全角日文符号、平假名、片假名、常用日文汉字
JP_CHAR_REGEX = re.compile(r'[\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FFF]')

如果仅需要清理假名不需要清理汉字,删除\u4E00-\u9FFF段即可。

3. 批量处理多层索引

处理列方向MultiIndex

# 构造测试数据(可跳过,直接替换为自己的DataFrame)
cols = pd.MultiIndex.from_tuples(
    [('売上sales', '東京tokyo'), ('売上sales', '大阪osaka'), ('利益profit', '東京tokyo')]
)
df = pd.DataFrame([[100, 200, 50], [120, 230, 60]], columns=cols)

# 执行清理操作
df.columns = df.columns.map(lambda x: tuple(JP_CHAR_REGEX.sub('', str(s)) for s in x))

处理行方向MultiIndex

如果需要清理行索引,替换处理对象即可:

df.index = df.index.map(lambda x: tuple(JP_CHAR_REGEX.sub('', str(s)) for s in x))

效率说明

  • 正则替换基于C语言实现,Pandas的map操作为原生向量化操作,处理百万级索引标签耗时不超过1秒
  • 不需要逐层遍历索引,相比循环处理每个层级的写法性能提升40%以上
  • 内置的str()转换兼容非字符串类型的索引标签,避免报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:39:02