生成一列,该列的随机百分比总和为1

2024-05-13 12:09:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个随机百分比列,其中的总和应为1

当前表格:

Col1    Value
A        100
B        100

通缉犯示例1:如果有两行,那么随机值可以是任何数字,但总数必须是1

Col1    Value  Random  New Value
A        100    0.7    70
B        100    0.3    30
                 1 

通缉示例2:三行样本

Col1    Value  Random  New Value
A        100    0.2     20
B        100    0.1     10
C        100    0.7     70
                 1

Tags: 示例newvalue数字random表格col1百分比
2条回答

您可以使用^{}^{}

import pandas as pd
import numpy as np
df = pd.DataFrame({'Col1': list("ABC"), 'Value': [100]*3})
df['random'] = np.around(np.random.dirichlet
                        (np.ones(df.shape[0]),size=1)[0],
                         decimals = 1)
df['New value'] = (df['Value']*df['random']).astype(int)
print(df)

输出:

  Col1  Value  random  New value
0    A    100     0.4         40
1    B    100     0.3         30
2    C    100     0.3         30

您可以使用numpy函数random.randint

df = pd.DataFrame({'Value': [100, 100, 100]})

nums = np.random.randint(10, size=len(df))
df['Random'] = nums / nums.sum()
df['New'] = df['Value'] * df['Random']

df.loc['Sum', :] = df.sum()

输出:

     Value  Random     New
0    100.0  0.1250   12.50
1    100.0  0.3125   31.25
2    100.0  0.5625   56.25
Sum  300.0  1.0000  100.00

相关问题 更多 >