实验设计

时间:2019-02-22 06:56:16

标签: python pandas dataframe

我需要按百分比将df数据帧随机分为对照组,治疗1和治疗2组,即每天分别为10%,45%,45%。

这是示例数据框

    Date          Customer_ID

 1. 2018-05-01         411
 2. 2018-05-01         414
 3. 2018-05-01         421
 4. 2018-05-01         431
 5. 2018-05-01         433
 6. 2018-05-02         441
 7. 2018-05-02         442
 8. 2018-05-02         443
 9. 2018-05-02         444

我的最终结果应如下所示:

      Date       Customer_ID    Group

 1. 2018-05-01       411         Control
 2. 2018-05-01       414         Treatment 1
 3. 2018-05-01       421         Treatment 1
 4. 2018-05-01       431         Treatment 2
 5. 2018-05-01       433         Treatment 2
 6. 2018-05-02       441         Treatment 1
 7. 2018-05-02       442         Treatment 2
 8. 2018-05-02       443         Treatment 2
 9. 2018-05-02       444         Treatment 1

对于每天的对照组,治疗1和治疗2组必须分别占该天特定客户总数的10%,45%和45%。

在按日期对最终结果数据进行交叉制表并创建新的组变量后,我应该获得以下每个类别占每天客户总数的百分比:

  Date                          Group


                  Control       Treatment1     Treatment2

 1. 2018-05-01      10 %         45%           45%
 2. 2018-05-02      10 %         45%           45%
 3. 2018-05-03      10 %         45%           45%
 4. 2018-05-04      10 %         45%           45%
      :
      :

我已尝试按照堆栈溢出(Assign control vs. treatment groupings randomly based on % for more than 2 groups)上的帖子进行操作,但没有给出我每天所需的实际百分比。下面是我在数据框上使用的代码

df['Groups'] = df.groupby('date')['Customer_ID'].transform(lambda x: np.random.choice(['Control','treatment_1', 'treatment_2'], len(x),  p=[0.1,0.45,0.45]))

我获得以下百分比(每个类别的计数数量/每天的计数总数):

  Date                          Group


                  Control       Treatment1     Treatment2

 1. 2018-05-01      8.42 %      47.37%          44.21%
 2. 2018-05-02      11.4 %      36.84%          51.75%
 3. 2018-05-03      11.68 %     51.09%          37.23%
 4. 2018-05-04       8.26 %     46.79%          44.95%
      :
      :

有没有办法做到这一点?

0 个答案:

没有答案