Python导出Excel遇TypeError:numpy.int64对象无len()方法
解决TypeError: object of type 'numpy.int64' has no len()问题
问题原因
data['ID'].unique()返回的元素是numpy数据类型(如numpy.int64),而Excel要求工作表名称必须是字符串类型,当代码调用len()检查工作表名称长度时,无法对numpy数值类型执行该操作,因此触发报错。
修正代码
首先需要将字典数据转换为pandas DataFrame(原代码缺失此关键步骤,否则直接操作字典会触发其他错误),同时在循环中将唯一ID转换为Python原生字符串类型:
import pandas as pd data = {'ID': ['1', '2', '2', '3'], 'Name': ['Jack', 'John', 'Steve', 'James']} # 把字典转为pandas DataFrame df_data = pd.DataFrame(data) with pd.ExcelWriter('output.xlsx') as writer: # 遍历唯一ID,转为字符串作为工作表名称 for name in df_data['ID'].unique(): df = df_data[df_data['ID'] == name] # 强制转换为字符串,避免numpy类型冲突 df.to_excel(writer, sheet_name=str(name))
额外说明
- 如果你的
ID字段原本是整数类型(而非示例中的字符串),同样需要用str(name)转换为字符串,因为numpy.int64类型无法被Excel工作表名称解析 - 确保已安装依赖库:执行
pip install pandas openpyxl(openpyxl是写入xlsx格式文件的必需依赖)
内容的提问来源于stack exchange,提问作者Crystal
相关产品推荐
相关产品推荐

