создать дельту столбца на основе ограничения - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть фрейм данных:

date_1     Count
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21
01/09/2019  21

Я хочу сгенерировать дельту столбца таким образом, чтобы 60% значений счетчика (округленных) имели значение 2, а остальные - 4.

например, для date_1 = 01/09/2019 имеется 21 запись, поэтому значения 0,6 * 21 = 12,6 ~ 13 имеют дельту как 2, а остальные имеют дельту как 4

Ожидаемый результат:

date_1     Count   delta
01/09/2019  21     2
01/09/2019  21     2
01/09/2019  21     2
01/09/2019  21     2
01/09/2019  21     2
01/09/2019  21     2
.           .      . 
.           .      .
01/09/2019  21     4
01/09/2019  21     4
01/09/2019  21     4 

Может ли кто-нибудь помочь в достижении того же.

1 Ответ

1 голос
/ 04 ноября 2019

Используйте Groupby.transform для преобразования количества столбцов в серии с 2 или 4, используя np.where, чтобы заполнить 60% длины с 2 и 40% с 4:

df['delta']=df.groupby('date_1')['Count'].transform(lambda x: np.where ( (x.reset_index(drop=True).index+1 < round(len(x)*0.6)),2,4)  ).sample(frac=1).reset_index(drop=True)
print(df)

print(df)

        date_1  Count  delta
0   01/09/2019     21      2
1   01/09/2019     21      4
2   01/09/2019     21      2
3   01/09/2019     21      2
4   01/09/2019     21      2
5   01/09/2019     21      2
6   01/09/2019     21      4
7   01/09/2019     21      2
8   01/09/2019     21      4
9   01/09/2019     21      2
10  01/09/2019     21      2
11  01/09/2019     21      4
12  01/09/2019     21      4
13  01/09/2019     21      2
14  01/09/2019     21      4
15  01/09/2019     21      4
16  01/09/2019     21      4
17  01/09/2019     21      2
18  01/09/2019     21      4
19  01/09/2019     21      2
20  01/09/2019     21      2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...