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

如何按指定宽度拼接Pandas DataFrame中的整数列?

解决Pandas DataFrame按指定宽度拼接列的问题

没问题,我来帮你搞定这个列拼接的需求!你想要把C1按两位数字宽度、C2按三位数字宽度拼接成新列,之前用str(df.C1)没成功是因为这个操作是把整个Series转成了字符串,而不是逐个元素处理。下面给你两种高效的解决方案:

方法一:向量化字符串处理(推荐,大数据量更高效)

利用Pandas的字符串方法,先把整数列转为字符串,再用str.zfill(n)来填充前导0保证指定宽度,最后直接拼接两个字符串列:

import pandas as pd

# 示例数据
df = pd.DataFrame({'C1': [8, 12, 5], 'C2': [49, 156, 7]})

# 创建新列CODESUM
df['CODESUM'] = df['C1'].astype(str).str.zfill(2) + df['C2'].astype(str).str.zfill(3)

运行后你的DataFrame会变成:

C1   C2 CODESUM
0   8   49   08049
1  12  156   12156
2   5    7   05007

你提到开头的0无关紧要,这个结果完全满足要求——既保证了指定的宽度,多余的前导0也不影响后续使用。

方法二:使用apply和格式化字符串

如果习惯用Python的格式化语法,也可以用apply逐行处理,适合逻辑更复杂的场景:

df['CODESUM'] = df.apply(lambda row: f"{row['C1']:02d}{row['C2']:03d}", axis=1)

这里的02d表示把整数格式化为两位(不足补0),03d表示三位,和方法一的效果完全一致。不过要注意,apply是逐行操作,当数据量非常大时,效率会比方法一的向量化处理低一些。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:43:16