首页 > 解决方案 > Pandas:根据模式自动生成增量 ID

问题描述

我想创建一个数据框,不断向其中添加各种用户(姓名、电话号码、地址......)。现在,我需要一个函数,一旦将一个新的、不存在的用户添加到数据框中,它就会自动生成一个 ID。

第一个用户应该得到 ID U000001,第二个用户应该得到 ID U000002,依此类推。

最好的方法是什么?

标签: pythonpandasdataframe

解决方案


如果我理解正确,主要问题是前导零。即你不能只增加以前的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

推荐阅读