python - Pandas:根据模式自动生成增量 ID
问题描述
我想创建一个数据框,不断向其中添加各种用户(姓名、电话号码、地址......)。现在,我需要一个函数,一旦将一个新的、不存在的用户添加到数据框中,它就会自动生成一个 ID。
第一个用户应该得到 ID U000001,第二个用户应该得到 ID U000002,依此类推。
最好的方法是什么?
解决方案
如果我理解正确,主要问题是前导零。即你不能只增加以前的ID,因为类型转换'0001'只会给出1而不是0001。如果我错了,请纠正我。
无论如何,这就是我想出的。它比您可能需要的要冗长得多,但我想确保我的逻辑清晰。
def foo(previous):
"""
Takes in string of format 'U#####...'
Returns incremented value in same format.
Returns None if previous already maxed out (i.e. 'U9999')
"""
value_str = previous[1:] # chop off 'U'
value_int = int(value_str) # get integer value
new_int = value_int + 1 # increment
new_str = str(new_int) # turn back into string
# return None if exceeding character limit on ID
if len(new_str) > len(value_str):
print("Past limit")
return(None)
# add leading zeroes
while(len(new_str) < len(value_str)):
new_str = '0' + new_str
# add 'U' and return
return('U' + new_str)
如果我能澄清任何事情,请告诉我!这是一个可以用来测试它的脚本:
# test
current_id = 'U0001'
while(True):
current_id = foo(current_id)
print(current_id)
if current_id == None:
break
推荐阅读
- javascript - 如何在引导程序中更改图像卡?
- git - post-commit 钩子告诉父 repo 更新到 bit bucket 中子模块的链接
- java - 使用 JRBeanCollectionDataSource 合并 Jasper Reports 中的表格行单元格?
- php - 将继承变量(混合类型)的数据类型覆盖为特定类型(字符串)
- ios - IOS 更新到 14.7.1 后流式 OWT 应用程序不流式传输
- prometheus - PromQL over HTTP 没有通过 curl 返回任何结果
- c++ - 使用 nlohmann::json 从 JSON 解析浮点数
- python - Django Test.py django.db.utils.IntegrityError:唯一约束失败:books_book.id
- c++ - 可以使用 Cmake 构建 docker 容器,然后在该容器中构建 C++ 代码吗?
- python - sounddevice 和树莓派 4 导致零星的输入溢出