
本文介绍如何对 NumPy 字符串数组中的每个元素统一执行文本清洗操作——移除所有空格、将半角逗号(,)替换为英文小数点(.),适用于金融数据、CSV 导入后格式标准化等场景。
在处理从波兰证券交易所等来源获取的结构化文本数据时,常见数值字段(如成交额、市盈率)以带空格分隔的千位格式(如 '1 386 216 000')和欧洲风格小数(如 '0,891')存储。这类数据直接用于数值计算前,必须清洗为标准数字格式(如 '1386216000' 和 '0.891')。由于原始数据已加载为 dtype=' 推荐使用 np.vectorize 封装纯字符串处理函数,既保持代码简洁,又充分利用 NumPy 的广播能力。核心逻辑仅需两步:先用 .replace(' ', '') 删除全部空格;再用 .replace(',', '.') 将逗号转为小数点。注意该顺序不可颠倒——若先替换逗号,后续去空格可能误删其他位置的空格(尽管本例中无此风险,但属良好实践)。 以下是完整可运行示例: 注意事项: 该方法简洁、可靠、易维护,是 NumPy 字符串预处理的标准实践之一。import numpy as np
# 原始数据(已定义为 <U14 类型的二维数组)
data = np.array([
['ALIOR', 'PLALIOR00045', '88 860 000', '1 386 216 000', '0,891', '2,16', '14'],
['CCC', 'PLCCC0000016', '27 918 000', '1 292 603 400', '0,831', '5,28', '42'],
# ...(其余行同上,此处省略以保持简洁)
['TAURONPE', 'PLTAURN00011', '1 043 590 000', '1 252 308 000', '0,805', '1,21', '33']
], dtype='<U14')
# 定义清洗函数
def process_text(text):
return text.replace(' ', '').replace(',', '.')
# 向量化应用(自动广播到数组每个元素)
processed_data = np.vectorize(process_text)(data)
print(processed_data[0]) # 示例输出:['ALIOR' 'PLALIOR00045' '88860000' '1386216000' '0.891' '2.16' '14']










