我想创建一个包含200个不同值的一百万个键的字符串:
N = 1000000
uniques_keys = [pd.core.common.rands(3) for i in range(200)]
keys = [random.choice(uniques_keys) for i in range(N)]
但是,我收到以下错误
In [250]:import pandas as pd
In [251]:pd.core.common.rands(3)
Traceback (most recent call last):
File "<ipython-input-251-31d12e0a07e7>", line 1, in <module>
pd.core.common.rands(3)
AttributeError: module 'pandas.core.common' has no attribute 'rands'
我使用pandas版本0.18.0。
答案 0 :(得分:3)
有几种解决方案:
第一个解决方案:
功能rands
现在似乎在pandas.util.testing
中:
pd.util.testing.rands(3)
第二个解决方案:
直接进行基础numpy
实施(找到in the pandas source code):
import string
RANDS_CHARS = np.array(list(string.ascii_letters + string.digits),
dtype=(np.str_, 1))
nchars = 3
''.join(np.random.choice(RANDS_CHARS, nchars))
第三个解决方案:
致电numpy.random.bytes
(检查它是否符合您的要求)。
第四个解决方案:
有关其他建议,请参阅this question。
答案 1 :(得分:3)
您可以使用:
In [14]: pd.util.testing.rands_array?
Signature: pd.util.testing.rands_array(nchars, size, dtype='O')
Docstring: Generate an array of byte strings.
演示:
In [15]: N = 1000000
In [16]: s_arr = pd.util.testing.rands_array(10, N)
In [17]: s_arr
Out[17]: array(['L6d2GwhHdT', '5oki5T8VYm', 'XKUblAUFyL', ..., 'BE5AdCa62a', 'X3zDFKj6iy', 'iwASB9xZV3'], dtype=object)
In [18]: len(s_arr)
Out[18]: 1000000