【发布时间】:2019-04-09 07:25:47
【问题描述】:
我有 pandas 数据框,比如说 df,它看起来像
Region ID
A 111
A 222
A 333
A 444
B 555
B 666
B 777
C 888
C 999
ID 列有其权重。在这种情况下,A 的权重为 2,B 的权重为 2,C 的权重为 1。
权重永远不会超过“区域”列中的值的数量,这意味着 A 的权重永远不会超过 4,因为我们有 4 条 A 记录
我想创建一个新列,并在此列中根据 ID 列中的权重分配随机整数值,但这些随机值必须均匀分布。为了更清楚起见,我希望新的数据框应该是这样的
Region ID Random_Value
A 111 1
A 222 2
A 333 1
A 444 2
B 555 2
B 666 2
B 777 1
C 888 1
C 999 1
当“区域”列中的值是奇数时,例如“B”,我想平均分配随机值,但余数可以具有任何随机整数值。
当“区域”列中的值是偶数时,例如“A”并且它的权重为 2,我需要分配从 1 到 2 的随机整数值(含),这些随机整数的数量应该相等。
我尝试了很多方法,但都没有成功。有没有办法解决这个问题?
我的代码如下:
df['Random_Value'] = np.nan
A = df['region'] == 'A'
df.loc[A, 'Random_Value'] = np.random.randint(1,3, size=A.sum())
【问题讨论】:
-
您可以编辑您的帖子以包含您尝试过的代码吗?
-
每个地区都有权重栏吗?
-
目前,我没有,但我可以在每个区域的主数据框中添加权重列
-
如果 A 的权重为 2,这意味着随机值只能是
[1, 2]对吧? -
是的,没错。如果权重是 3 个随机值应该是
[1,2,3]
标签: python pandas dataframe random