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

如何将Pandas中bytes转为UTF-8且不使整数变为NaN?

解决方案

方法1:布尔掩码 + 向量化字符串解码

通过布尔掩码筛选出bytes类型的元素,仅对这类元素执行UTF-8解码,整数元素原样保留,全程为向量化操作,执行效率更高:

import pandas as pd

# 假设目标DataFrame为df,处理列名为'x'
mask = df['x'].apply(lambda x: isinstance(x, bytes))
df.loc[mask, 'x'] = df.loc[mask, 'x'].str.decode('utf-8')

方法2:向量化类型处理函数

用np.vectorize封装类型判断与解码逻辑,实现元素级的向量化转换:

import pandas as pd
import numpy as np

decode_func = np.vectorize(lambda val: val.decode('utf-8') if isinstance(val, bytes) else val)
df['x'] = decode_func(df['x'])

补充说明

  • 方法1更推荐,因为它仅对需要转换的bytes元素调用解码方法,避免对整列做无效操作,速度更快;
  • 如果需要将解码后的字符串统一转换为整数格式(和原有整数保持一致),可在解码后执行:
    df['x'] = pd.to_numeric(df['x'], errors='ignore')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:35:45