我正在尝试遍历pandas数据框,并在特定列的每个元素的末尾添加4个随机数,但是我的函数将相同的随机数附加到每一行。每次迭代行时,它都会生成随机数,但只会添加它生成的前4个随机数,然后将相同的数字附加到所有行中。
def create_cpr(df, symbol):
for idx, row in df.iterrows():
number = str(rand.randint(1111, 9999))
df['SNumber'] = df['DateOfBirth'].str.replace('-', '') + symbol + number
df = df.drop(['DateOfBirth'], axis=1)
return df
我希望结果是
FirstName LastName Email SNumber
0 Joe Jones jj@gmail.com **27031968-8923**
1 Alice Apple aa@gmail.com **11121887-5318**
答案 0 :(得分:2)
您可以在np.random.randint
中生成所有随机数,转换为字符串并添加到列中,DataFrame.pop
也用于选择和删除列:
def create_cpr(df, symbol):
r = np.random.randint(1111, 9999, size=len(df)).astype(str)
df['SNumber'] = df.pop('DateOfBirth').str.replace('-', '') + symbol + r
return df