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

pandas assign新增列触发ufunc multiply签名不匹配报错求解

报错原因

报错的核心是运算符使用不符合pandas/numpy的数组运算规则:

  • Python原生标量运算支持字符串 * 整数的语法,效果是把字符串重复整数次生成新字符串,但这个规则不会自动适配pandas的Series数组运算
  • 你写的"9"*x.column1.astype('int')中,*会被numpy识别为逐元素乘法运算,此时运算符左侧是字符串类型,右侧是整数类型的Series,numpy的multiply通用函数没有适配「字符串乘整数生成重复字符串」的逻辑,找不到类型匹配的运算循环,就抛出如下报错:

ufunc 'multiply' did not contain a loop with signature matching types (dtype('<U21'), dtype('<U21')) ->dtype('<U21')

解决方法

选择以下任意一种写法都可以实现预期的列生成效果:

  • 方法1:使用pandas内置的字符串重复方法str.repeat,适配数组运算逻辑
df2 = df.assign(
    column2 = lambda x: "B:" + "9".repeat(x.column1.astype('int'))
)
  • 方法2:使用列表推导逐行计算,逻辑直观且运行效率高
df2 = df.assign(
    column2 = ["B:" + "9" * int(val) for val in df['column1']]
)

运行上述代码后,得到的DataFrame结构完全符合预期:

行索引column1column2
row12B:99
row25B:99999
row310B:9999999999

内容的提问来源于stack exchange,提问作者정유립

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:24:29