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

如何基于DataFrame的City列重置计数生成自定义ID?

解决方案

要实现同一城市内计数从1递增、切换城市后重置计数的效果,核心是用分组内计数替代全局索引。具体修改如下:

修改后的代码

# 生成每个城市分组内从1开始的递增序号
df['seq'] = df.groupby('City').cumcount() + 1
# 拼接自定义ID
df['id'] = df.City.str[:3] + '-' + df.Name.str[:3] + '-' + df['seq'].astype(str)
# 可选:删除临时序号列
df = df.drop('seq', axis=1)

代码说明

  • df.groupby('City').cumcount():对City列的每个分组单独计数,默认从0开始,加1后实现从1起步的递增序列,完美解决跨城市计数不重置的问题。
  • 拼接逻辑和你原有代码一致,只是把全局的df.index替换成了分组内的专属序号,保留了你想要的字符串前缀规则。

效果验证

用你的示例数据测试:
输入DataFrame:

City       Name
0      Paris       John
1      Paris       Paul
2      Paris     Pierre
3      Paris      Paula
4       Rome    Riccardo
5       Rome  Jean-Paul
6       Rome      Franc

运行代码后输出的id列:

0    Par-Joh-1
1    Par-Pau-2
2    Par-Pie-3
3    Par-Pau-4
4    Rom-Ric-1
5    Rom-Jea-2
6    Rom-Fra-3

完全匹配你期望的输出效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 13:19:54