【发布时间】:2018-11-13 18:36:58
【问题描述】:
我有一个如下的查找数据框:
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 位整数,长度 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)。
请提出建议。
【问题讨论】:
-
您的规则没有明确定义。为什么将 A20 和 D18 分别转换为 C300 和 A17,而不是 A73 和 D29?
-
@Mr.T 我希望输出数据帧是随机顺序
-
但是您的样本输入不应该是“A12 B2345 C345 C456”吗?目前,它既没有连接到查找也没有连接到输入。还不清楚。
标签: python python-3.x pandas random series