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

如何用Pandas为字符串列的每个值添加递增变量后缀?

问题解决:为DataFrame列添加递增后缀

原DataFrame

初始数据如下:

Specifieke_omschrijving_beheerobject Systeemdeelnummer
0    Weg, 4,300 tm 16,765 KP Zaandam - Purmerend Noord  007-0010-R
25   Weg, 16,765 tm 34,032 Purmerend Noord - Hoorn ...  007-0020-R
862       Weg, 50,212 tm 64,565 Middenmeer - Den Oever  007-0040-R

错误代码及问题分析

尝试用以下代码添加递增后缀时出现错误:

count = 1
while count < len(beheerobjecten):
    beheerobjecten["Systeemdeelnummer"] = beheerobjecten["Systeemdeelnummer"].apply(lambda x: f"{x}.{count}")
    count += 1

错误原因:

  • 循环每次会遍历整列所有元素,重复追加当前count值,导致最终每个元素被多次添加后缀(比如先加.1,再加.2,变成.1.2)
  • 循环条件count < len(beheerobjecten)只执行2次(因为len=3),无法覆盖第3行数据

错误输出:

Specifieke_omschrijving_beheerobject Systeemdeelnummer
0    Weg, 4,300 tm 16,765 KP Zaandam - Purmerend Noord    007-0010-R.1.2
25   Weg, 16,765 tm 34,032 Purmerend Noord - Hoorn ...    007-0020-R.1.2
862       Weg, 50,212 tm 64,565 Middenmeer - Den Oever    007-0040-R.1.2

期望输出

Specifieke_omschrijving_beheerobject Systeemdeelnummer
0    Weg, 4,300 tm 16,765 KP Zaandam - Purmerend Noord  007-0010-R.1
25   Weg, 16,765 tm 34,032 Purmerend Noord - Hoorn ...  007-0020-R.2
862       Weg, 50,212 tm 64,565 Middenmeer - Den Oever  007-0040-R.3

正确解决方案

方法1:利用索引直接拼接

最简洁的方式,通过DataFrame的索引+1生成递增序号,直接与原列拼接:

beheerobjecten["Systeemdeelnummer"] = beheerobjecten["Systeemdeelnummer"] + "." + (beheerobjecten.index + 1).astype(str)

方法2:使用apply遍历行

通过axis=1传入整行数据,利用行索引生成序号:

beheerobjecten["Systeemdeelnummer"] = beheerobjecten.apply(lambda row: f"{row['Systeemdeelnummer']}.{row.name + 1}", axis=1)

方法3:enumerate遍历行

手动遍历每行,用enumerate生成从1开始的递增序号:

for idx, (index, row) in enumerate(beheerobjecten.iterrows(), start=1):
    beheerobjecten.loc[index, "Systeemdeelnummer"] = f"{row['Systeemdeelnummer']}.{idx}"

以上三种方法都能得到符合预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:23:16