循环数据帧并生成随机数据帧

时间:2018-06-04 12:13:12

标签: python python-3.x pandas random series

我有一个查找数据框如下:

            String   Length
0            A       2
1            B       4
2            C       3
3            D       2

我有一个输入数据框如下:

   Input
0  A20
1  B1611
2  C001
3  D18

我希望获得如下输出:

      Output
    0  C300
    1  B2718
    2  C421
    3  A17

其中B2718是B与随机值2718连接,后者是4位int,长度4是从查找的“长度”列获得的。

我写了以下代码:

def random_with_N_digits(n):
    range_start = 10**(n-1)
    range_end = (10**n)-1
    return randint(range_start, range_end)

def r_funct(lookup):
r_list = []
for index, row in lookup.iterrows():
    r_int= random_with_N_digits(row.Length)
    r_str=row.String+str(r_int)
    r_list.append(r_str)
return r_list
out_df = r_funct(lookup)
out_df = pd.DataFrame(out_df, columns=['Output'])
out_df = out_df.sample(n=in_df.size)
print(out_df)

但是我无法在每次运行时获得相同的输出数据帧(out_df)。

请建议。

1 个答案:

答案 0 :(得分:0)

这是np.random.randintpd.Series.apply一起使用的一种方式。

注意我假设没有重新排序,这似乎暗示了你想要的输出。

np.random.seed(0)

def random_num(i):
    return str(np.random.randint(10**(i-1), 10**i))

df['Value'] = df['String'] + df['Length'].apply(random_num)

print(df)

  String  Length  Value
0      A       2    A42
1      B       4  B3708
2      C       3   C906
3      D       2    D13