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

numpy.int64列表元素追加'days'字符串报错解决问询

解决numpy.int64与字符串拼接的TypeError问题

哈哈,这个坑我之前踩过!你遇到的TypeError: ufunc 'add' did not contain a loop with signature matching types dtype,本质原因是numpy.int64类型的数值不能直接和Python字符串做加法操作——numpy的通用函数(ufunc)没有定义这两种类型的相加规则,自然就报错啦。

给你几个亲测好用的解决方案:

方案1:列表推导式里转字符串(最直观)

直接在列表推导里把numpy数值转成字符串,再和"days"拼接,用f-string更简洁:

median_labels = [f"{m} days" for m in medians]

或者用传统的str()转换:

median_labels = [str(m) + " days" for m in medians]

用你提供的测试数组array([ 9, 11, 7, 27, 13, 42, 35, 10, 9, 23, 17]),运行后会得到:

['9 days', '11 days', '7 days', '27 days', '13 days', '42 days', '35 days', '10 days', '9 days', '23 days', '17 days']

方案2:用numpy原生向量操作(适合大数组)

如果你习惯用numpy的批量操作,不想写列表推导,可以先把数组转成字符串类型,再用np.char.add批量拼接:

import numpy as np
# 先转字符串,再拼接
median_labels_np = np.char.add(medians.astype(str), " days")
# 如果需要转成Python列表,加个tolist()
median_labels = median_labels_np.tolist()

这种方法在处理超大数组时效率更高,避免Python循环的开销。

额外小提示

其实你也可以在生成medians的时候就转成Python原生int类型,比如:

medians = closing_deals.groupby(['origin'])['days_to_close'].median().tolist()
# 这样medians就是Python int的列表,直接拼接字符串就不会报错了
median_labels = [f"{m} days" for m in medians]

把.values换成.tolist(),直接得到Python列表,后续操作更省心~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:17:38