【发布时间】:2019-11-04 13:41:17
【问题描述】:
我有一个带有列的数据框 df:
Date_1 count
01/09/2019 5
02/09/2019 4
03/09/2019 5
04/09/2019 6
05/09/2019 7
06/09/2019 8
07/09/2019 10
08/09/2019 9
09/09/2019 11
10/09/2019 12
11/09/2019 13
12/09/2019 14
13/09/2019 15
14/09/2019 18
15/09/2019 17
16/09/2019 18
17/09/2019 19
18/09/2019 20
19/09/2019 21
20/09/2019 22
21/09/2019 23
22/09/2019 24
23/09/2019 25
24/09/2019 26
25/09/2019 27
26/09/2019 28
27/09/2019 29
28/09/2019 30
29/09/2019 30
30/09/2019 30
我想生成具有 3 列 date_1、count、date_2 的 df2,这样:
date_2 是根据计数生成的。如果 date_1 的计数为 5,则数据框中将有 5 个条目。 date_2 也有以下约束:
- 70% 的值在(date_1 - 10 到 date_1 - 2)的范围内
- 剩余值在 (date_1 - 30 到 date_1 - 11) 范围内
date_1 和 date_2 中的每一个都应该是唯一的元组,即没有对 (date_1,date_2) 重复。
例如:
对于第一行: date_1 的 4 个值应在 range1 = (01/09/2019 - 10 = 22/08/2019 至 01/09/2019 - 30/08/2019) 的范围内,其余 1 个值应在 range 范围内2(01/09/2019 - 30 = 02/08/2019 至 01/09/2019 - 21/08/2019)。
对于 count = 30 的数据框中的值,我们不需要进行此更改,因为我们需要唯一值,并且由于 date_2 可以采用的总值是 30,因此我们必须合并所有值。 (在那种情况下,我们不能选择 70% 和 30%)
我无法理解如何根据这些因素特别设计该数据框。因此,对于计数 >11,它应该具有 1 范围内的所有值(8 个值)。在此之前,它是范围 1 和范围 2 中的 70% 和 30% 划分。
谁能帮我定义这些约束。
谢谢
【问题讨论】:
-
要求date_2的70%的值在(date_1 - 10 to date_1 - 2)的范围内,它们是在某些情况下,独一无二是不可能的。例如。对于 28/09/2019,您需要 30 个输出行。其中 70 % 是 21,可供选择的日期只有 9 个日期。也许在这种情况下应该允许重复?
-
@Valdi_Bo 就像我在问题中提到的那样,在这些情况下,将存在 9 个日期,而其余日期必须在其他日期范围内。就像我提到的,30 是计数的情况,那么我们需要提供 1 个月的范围。在任何情况下,我们都不需要对 date_1、date_2 进行重复