Python 如何有效地向数据帧添加多个唯一的随机值?

Python 如何有效地向数据帧添加多个唯一的随机值?,python,pandas,Python,Pandas,我有一个长度为20的字符串,大约有30%0和70%1。像这样的“111010011110111011110” 我想用相同的1,0分布再生成10个字符串 现在我可以打电话给你 ''.join(map(str, np.random.choice([0, 1], size=20, p=[0.3, 0.7]))) 十次 然而,出于效率考虑,我是否可以尽可能少地调用random.choice,也许是一次? 现在我通过创建一个dataframe,然后添加一个调用上述函数的列来实现这一点,如下所示 df =

我有一个长度为20的字符串,大约有30%0和70%1。像这样的“111010011110111011110”

我想用相同的1,0分布再生成10个字符串

现在我可以打电话给你

''.join(map(str, np.random.choice([0, 1], size=20, p=[0.3, 0.7])))
十次

然而,出于效率考虑,我是否可以尽可能少地调用random.choice,也许是一次? 现在我通过创建一个dataframe,然后添加一个调用上述函数的列来实现这一点,如下所示

df = pd.DataFrame([None]*10)
df['Stuff'] = ''.join(map(str, np.random.choice([0, 1], size=20, p=[0.3, 
0.7])))
df
但是,这10个值中的每一个都是相同的。 如何使它们成为唯一的随机值

如果没有,是否有某种方法可以“矢量化”np.random函数,以便我生成这些随机数的过程更有效


谢谢

您的示例的问题是,您为整个
df
分配了一个值。你可以为这个建立一个列表

l1 = [str(np.random.choice([0, 1], size = 20, p = [0.3, 0.7])) for i in range(len(df.index))]
df = df.assign(Stuff=l1)
另一种方法是在
numpy
数组中创建值,如:

array = np.fromiter((str(np.random.choice([0, 1], size = 20, p = [0.3, 0.7])) for x in range(10)), dtype=float)
如果需要,可以为此查找
dtypes
,因为字符串类型会引发错误。这些就是我能找到答案的方法。祝你好运