Python:将列中数据转为三位格式并拼接生成Product_Code列
解决方法:用Pandas生成带格式的Product_Code列
针对你的需求,我们可以用Python的Pandas库轻松实现,分两步走:先把Color列处理成三位带前导零的字符串,再和Style列拼接成Product_Code。
步骤1:准备示例数据
先模拟你给出的示例数据(注意Color列是浮点数类型):
import pandas as pd # 创建示例DataFrame data = { 'Style': [323, 400, 323], 'Color': [10.0, 111.0, 23.0], 'Price': [10, 8, 5] } df = pd.DataFrame(data)
步骤2:处理Color列格式
因为Color是浮点数,我们需要先把它转换成整数(去掉小数点),再格式化为三位带前导零的字符串。这里有两种常用方法:
方法A:使用astype(int) + str.zfill(3)
# 先转整数,再补零到三位 df['Color_formatted'] = df['Color'].astype(int).astype(str).str.zfill(3)
astype(int):把浮点数转成整数(比如10.0→10,23.0→23)astype(str):转成字符串才能使用zfill方法str.zfill(3):自动在字符串前面补零,直到总长度为3(比如'10'→'010','23'→'023','111'保持不变)
方法B:使用apply和格式化字符串
# 用lambda函数直接格式化 df['Color_formatted'] = df['Color'].apply(lambda x: f"{int(x):03d}")
这种方式更简洁,直接把浮点数转成整数后,用03d格式符强制输出三位数字,不足的补前导零。
步骤3:拼接生成Product_Code列
把Style列转成字符串,和处理后的Color字符串用-拼接:
df['Product_Code'] = df['Style'].astype(str) + '-' + df['Color_formatted']
最终结果
执行完以上步骤后,你的DataFrame会变成:
| Style | Color | Price | Color_formatted | Product_Code | |
|---|---|---|---|---|---|
| 0 | 323 | 10.0 | 10 | 010 | 323-010 |
| 1 | 400 | 111.0 | 8 | 111 | 400-111 |
| 2 | 323 | 23.0 | 5 | 023 | 323-023 |
如果不需要保留Color_formatted中间列,可以直接一步到位:
df['Product_Code'] = df['Style'].astype(str) + '-' + df['Color'].apply(lambda x: f"{int(x):03d}")
这样就完美实现了你想要的Product_Code格式!
内容的提问来源于stack exchange,提问作者June Smith
相关产品推荐
相关产品推荐

