使用正则表达式遍历pandas Series时为何出现KeyError?
问题原因与解决方法
错误原因
你循环里的m是Series的元素值(比如'USDCNY_TOM'),但你用money[m]是试图把这个值当作索引去访问Series元素——而原Series的索引是0、1这种整数,根本不存在'USDCNY_TOM'这个索引,所以触发KeyError。
单独执行money[0]没问题,是因为你用的是正确的整数索引,直接取到了对应位置的元素。
正确做法
推荐用pandas原生的矢量化操作(效率更高,更符合pandas的使用习惯):
money = money.str.replace(m_trim, '', regex=True)
如果一定要用循环(仅作理解用,不推荐),要遍历索引而非元素值:
# 方法1:用enumerate获取索引和值 for idx, m in enumerate(money): money[idx] = m_trim.sub('', m) # 方法2:用items()遍历索引和值 for idx, m in money.items(): money[idx] = m_trim.sub('', m)
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

