如何根据两个条件添加一列随机数?

How to add a column of random numbers based on two conditions?

我在 python 中有一个数据框,其中包含以下信息:

Day         Type    
Weekday      1    
Weekday      2    
Weekday      3    
Weekday      1    
Weekend      2    
Weekend      1

我想通过生成 Weibull 随机数来添加一个新列,但是每对 "Day" 和 "Type" 都有唯一的 Weibull 分布。

例如,我尝试了以下代码,但它们不起作用:

df['Duration'][ (df['Day'] == "Weekend") & (df['Type'] == 1) ] = int(random.weibullvariate(5.6/math.gamma(1+1/6),6))

df['Duration'] = df['Day','Type'].map(lambda x,y: int(random.weibullvariate(5.6/math.gamma(1+1/10),10)) if x == "Weekday" and y == 1 if x == "Weekend" and y == 1 int(random.weibullvariate(5.6/math.gamma(1+1/6),6)))

定义一个函数来生成您想要的随机数并将其应用于行。

import io
import random
import math
import pandas as pd

data = io.StringIO('''\
Day         Type    
Weekday      1    
Weekday      2    
Weekday      3    
Weekday      1    
Weekend      2    
Weekend      1
''')
df = pd.read_csv(data, delim_whitespace=True)

def duration(row):
    if row['Day'] == 'Weekend' and row['Type'] == 1:
        return int(random.weibullvariate(5.6/math.gamma(1+1/6),6))
    if row['Day'] == 'Weekday' and row['Type'] == 1:
        return int(random.weibullvariate(5.6/math.gamma(1+1/10),10))

df['Duration'] = df.apply(duration, axis=1)