使用样本函数时,字符串值重复

时间:2019-12-22 06:24:48

标签: python python-3.x pandas

对于每个雇员,将有一个随机的子雇员,在这种情况下,当我尝试运行此程序时,同一子雇员会为其他雇员一次又一次地重复。我该怎么办?它不应该重复

{“can_place_on”;[“diamond_block”]}

1 个答案:

答案 0 :(得分:0)

Dataframe.sample()仅是一种采样技术,其中n = 3的采样都是唯一的。在这种情况下,您每次都会生成n = 1的样本,并且每一代都是彼此独立的,因此您将不会获得唯一的项。

一种生成非重复随机数的方法是使用range(n)创建一个列表,然后使用random.shuffle()对该列表进行混洗。现在您有了随机数列表,可以使用list.pop()

从该列表中取出每个元素

示例:

import numpy as np

from pandas import Series,DataFrame

CHCbot_Emp = DataFrame({'Employee_Name':['Deepak','Varadharajan','Akash','Jeffrin','Ashwini','Sathish','Vikram','Narasiman','satyavathi'],
                       'Employee_Code':['IS4001','IS4002','IS4003','IS4004','IS4005','IS4006','IS4007','IS4008','IS4009']})
CHCbot_Emp

l = list(range(len(CHCbot_Emp)))
np.random.shuffle(l)

for rows in CHCbot_Emp.itertuples(index=False):
    print(rows.Employee_Name+" "+rows.Employee_Code)
    print('Hey '+rows.Employee_Name+'!!! Pick your Child')
    random_Variable = CHCbot_Emp.iloc[l.pop()]
    print(random_Variable.Employee_Code+" "+random_Variable.Employee_Name)

在这里,我使用dataframe.iloc[l.pop()]来获取您的随机数据帧行。

另一种选择是使用random.sample()而不是.shuffle()

l = random.sample(list(range(len(CHCbot_Emp))),len(CHCbot_Emp))