【发布时间】:2018-09-18 04:02:44
【问题描述】:
如何创建一个新列来计算特定行中两列值之间的随机整数。
例子df:
import pandas as pd
import numpy as np
data = pd.DataFrame({'start': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'end': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]})
data = data.iloc[:, [1, 0]]
结果:
现在我正在尝试这样的事情:
data['rand_between'] = data.apply(lambda x: np.random.randint(data.start, data.end))
或
data['rand_between'] = np.random.randint(data.start, data.end)
但它当然不起作用,因为 data.start 是一个系列而不是一个数字。 如何将 numpy.random 与列中的数据一起用作矢量化操作?
【问题讨论】:
-
只是为了确定,当你说你想要一个“两列值之间的随机整数”时,你想在可能的随机值中包括端点吗?默认情况下,
nump.random.randint(low, high)在可能的输出中不包括值high,因此如果需要,请务必使用randint(low, high+1)。 -
@WarrenWeckesser 你是对的。我想在计算中包括终点。我会根据您的评论调整 jezrael anwer。
标签: python-3.x pandas numpy random