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

Pandas中将地址对象转字符串遇bytes类型问题的解决方法

解决Pandas中Bytes类型地址列的解码与文本清理问题

错误原因

直接对Series调用decode('UTF-8')会报错,因为decode是单个bytes对象的方法,而Pandas Series是数据集合,没有这个属性,必须对Series中的每个元素单独处理。

解决方案

方法1:修复已生成的Bytes类型列

如果已经生成了Address_Line1_2的bytes列,可以通过以下两种方式解码:

方式A:使用apply遍历每个元素解码

# 对每个bytes元素调用decode方法
df['Address_Line1_2'] = df['Address_Line1_2'].apply(lambda x: x.decode('UTF-8'))

方式B:使用Pandas的str访问器解码

Pandas的str访问器支持对bytes元素批量解码,代码更简洁:

df['Address_Line1_2'] = df['Address_Line1_2'].str.decode('UTF-8')

方法2:优化原处理流程,避免生成Bytes类型

原代码中astype('|S120')是将字符串强制转为bytes类型,这一步完全没必要。直接去掉该步骤,并改用Pandas向量化的str.replace(比apply+lambda效率更高,适合大型数据集):

import pandas as pd
import re

data = ['1111 S. Washington Street', '2222 S. Jefferson Ave', '3333 W. Madison Court #2']
df = pd.DataFrame(data, columns=['Address_Line1'])

# 1. 将地址转大写
df['Address_Line1_2'] = df['Address_Line1'].str.upper()
# 2. 清理特殊字符:用向量化的str.replace,效率远高于apply遍历
df['Address_Line1_2'] = df['Address_Line1_2'].str.replace('[^A-Za-z0-9 ]+', '', regex=True)

# 查看处理结果
print(df.info())
print(df.head())

处理后Address_Line1_2会保持字符串类型,无需后续解码操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:54:19