Python 创建数据帧:在numpy上映射函数

Python 创建数据帧:在numpy上映射函数,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我正在创建一个pandas数据帧,并使用numpy模拟值。我想将随机生成的ID分配给pandas中的两列,为此,我编写了一个返回字母数字ID的函数 但是,在我当前的代码中,它只调用函数一次,并为所有行返回相同的ID。我需要为每一行提供唯一的ID,因此需要高效地迭代数据帧 理想情况下,.apply可以做到这一点,但是,我需要在创建pandas数据帧时完成这一点 这是我的密码: # Generate alphanumeric lease id and property ids def gen_ids

我正在创建一个pandas数据帧,并使用numpy模拟值。我想将随机生成的ID分配给pandas中的两列,为此,我编写了一个返回字母数字ID的函数

但是,在我当前的代码中,它只调用函数一次,并为所有行返回相同的ID。我需要为每一行提供唯一的ID,因此需要高效地迭代数据帧

理想情况下,.apply可以做到这一点,但是,我需要在创建pandas数据帧时完成这一点

这是我的密码:

# Generate alphanumeric lease id and property ids
def gen_ids(length):
    
    ids = ''.join(random.choices(string.ascii_letters + string.digits, k=length))

    return ids

# Create DataFrame

df = pd.DataFrame({
                   'LeaseID': gen_ids(10)
                   'PropertyID': gen_ids(10),
                   'xyz': np.random.choice(List1, 1000),  
                   'abc': np.random.choice(List2, 1000),
                 })
结果:


您需要为每个单元格调用一次get_ID,而不是为每个列调用一次:

df = pd.DataFrame({
                   'LeaseID': [gen_ids(10) for _ in range(1000)], 
                   'PropertyID': [gen_ids(10) for _ in range(1000)],
                   'xyz': np.random.choice(List1, 1000),  
                   'abc': np.random.choice(List2, 1000),
                 })
输出为:

      LeaseID  PropertyID  xyz  abc
0  NHQikWbUZI  phwUIn9IgZ    8   19
1  f6aBvrSeWe  zV0tmst212    9   15
2  hdTHtm7LvU  lC6uQJeHRX    8   14
3  FnppdLbbcq  na9dVUO3Ay    2   17
4  arXAq4EvzT  7dvKTclo6o    1   18
...

您需要为每个单元格调用一次get_ID,而不是为每个列调用一次:

df = pd.DataFrame({
                   'LeaseID': [gen_ids(10) for _ in range(1000)], 
                   'PropertyID': [gen_ids(10) for _ in range(1000)],
                   'xyz': np.random.choice(List1, 1000),  
                   'abc': np.random.choice(List2, 1000),
                 })
输出为:

      LeaseID  PropertyID  xyz  abc
0  NHQikWbUZI  phwUIn9IgZ    8   19
1  f6aBvrSeWe  zV0tmst212    9   15
2  hdTHtm7LvU  lC6uQJeHRX    8   14
3  FnppdLbbcq  na9dVUO3Ay    2   17
4  arXAq4EvzT  7dvKTclo6o    1   18
...
备选代码:

修改了问题中的gen_id函数以返回序列

输出

print(df)

        LeaseID  PropertyID xyz abc
0    gxpSTdLoPH  rswWVZuBIW   a   q
1    OSdR5vOA0I  gHKdcYKw5s   e   L
2    WAmNQ4ieRH  ThC1Apk5YA   e   h
3    BYUTgbKcbl  IKcdjvH9da   c   L
4    4CNFqbu7hO  uJEWhlEufu   a   k
..          ...         ...  ..  ..
备选代码:

修改了问题中的gen_id函数以返回序列

输出

print(df)

        LeaseID  PropertyID xyz abc
0    gxpSTdLoPH  rswWVZuBIW   a   q
1    OSdR5vOA0I  gHKdcYKw5s   e   L
2    WAmNQ4ieRH  ThC1Apk5YA   e   h
3    BYUTgbKcbl  IKcdjvH9da   c   L
4    4CNFqbu7hO  uJEWhlEufu   a   k
..          ...         ...  ..  ..