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

如何让Pandas列拼接程序正常运行?需输出拼接后的整数

解决Pandas拼接两列为整数的问题

你的代码跑不起来的核心原因是:当使用apply(axis=1)时,传入lambda函数的是整行的Series对象,而不是你定义的两个独立参数x和y,这就导致了参数不匹配的错误。下面给你几种可行的修改方案:

方案一:修改lambda函数适配行对象

直接让lambda接收行数据,提取对应列的值后拼接转成整数:

import pandas as pd
d = pd.DataFrame({'A': range(5), 'B': range(5, 10)})
# 接收行对象,提取A、B列拼接后转整数
f = lambda row: int(str(row['A']) + str(row['B']))
# 生成新列存储结果
d['combined'] = d.apply(f, axis=1)

方案二:矢量化操作(推荐)

Pandas的矢量化操作比逐行apply效率高得多,尤其处理大数据量时更明显。直接对列做字符串拼接再转整数:

import pandas as pd
d = pd.DataFrame({'A': range(5), 'B': range(5, 10)})
# 将A、B列转字符串后拼接,再转回整数
d['combined'] = (d['A'].astype(str) + d['B'].astype(str)).astype(int)

方案三:用f-string简化拼接逻辑

如果喜欢f-string的写法,也可以用apply结合f-string实现:

import pandas as pd
d = pd.DataFrame({'A': range(5), 'B': range(5, 10)})
d['combined'] = d.apply(lambda row: int(f"{row['A']}{row['B']}"), axis=1)

为什么原代码不行?

再强调一下:d[['A', 'B']].apply(f, axis=1)会把每一行的A、B值打包成一个Series传给f,但你的f定义需要两个参数,所以会抛出TypeError。如果非要保留f的双参数形式,也可以嵌套一层lambda,但这种写法没必要,反而冗余:

# 不推荐,仅作演示
f = lambda x, y: int(str(x) + str(y))
d['combined'] = d.apply(lambda row: f(row['A'], row['B']), axis=1)

内容的提问来源于stack exchange,提问作者r.user.05apr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:04:29