У меня есть набор данных, который выглядит следующим образом:
ID I_Code Date_2 Date_1 c_b Count
FT-56832 2 01/09/2019 02/08/2019 1000 6
FT-93828 1 01/09/2019 03/08/2019 44 31
FT-13853 2 02/09/2019 03/08/2019 79 31
FT-18858 3 02/09/2019 04/08/2019 30 47
FT-56832 2 01/09/2019 04/08/2019 35 47
FT-19010 2 03/09/2019 04/08/2019 53 47
FT-62064 5 02/09/2019 04/08/2019 79 47
FT-94494 4 03/09/2019 04/08/2019 96 47
FT-73594 2 03/09/2019 04/08/2019 89 47
FT-78590 1 01/09/2019 05/08/2019 66 30
FT-14296 4 01/09/2019 05/08/2019 20 30
FT-82529 3 03/09/2019 05/08/2019 95 30
FT-33266 3 04/09/2019 05/08/2019 80 30
FT-62064 5 02/09/2019 05/08/2019 80 30
FT-94494 4 03/09/2019 05/08/2019 97 30
Я хочу расширить набор данных таким образом, чтобы общее количество записей в наборе данных соответствовало столбцу count, например для (Date_1, Date_2, ID, I_Code) есть счетчик, который представляет количество строк, например, первая строка должна быть расширена до 31 записи, где нам нужно создать еще один столбец c_b1, а сумма для c_b1 должна быть равна c_b, т.е. 34 в случае примера.
Благодаря @ jezrael,
я смог случайным образом разделить его, используя следующий код:
from numpy.random import multinomial
def func(x):
N = np.random.randint(5, 10, size=1)[0]
print (N)
return multinomial(x, [1./N] * N)
a = df.join(pd.concat({k: pd.Series(func(v)) for k, v in df['value'].items()}).reset_index(level=1, drop=True).rename('A'))
print (a)
, где функция v генерировала счет. Теперь у меня уже есть счетчик и пытается использовать это:
a = df.join(pd.concat({k: pd.Series(df['count']) for k, v in df['value'].items()}).reset_index(level=1, drop=True).rename('A'))
print (a)
, но это не обеспечивает вывод.
Пример ожидаемого результата:
Ожидаемый ввод:
ID I_code date_1 date_2 value count
FT-56832 2 01/09/2019 02/08/2019 1000 6
Ожидаемый результат:
ID I_code date_1 date_2 c_b1 c_b
FT-56832 2 1/09/2019 2/08/2019 155 1000
FT-56832 2 1/09/2019 2/08/2019 170 1000
FT-56832 2 1/09/2019 2/08/2019 165 1000
FT-56832 2 1/09/2019 2/08/2019 174 1000
FT-56832 2 1/09/2019 2/08/2019 175 1000
FT-56832 2 1/09/2019 2/08/2019 161 1000
Обратите внимание, что нет ограничений на распределение c_b1, его можно рандомизировать.
Может кто-нибудь помочь с тем же.
Спасибо