Генерация данных с помощью Python на основе данных столбца - PullRequest
2 голосов
/ 27 октября 2019

У меня есть фрейм данных, который выглядит следующим образом:

I_Code      Date_1      Date_2    s_count
FT-35447    01/09/2019  02/08/2019  6
FT-40664    01/09/2019  02/08/2019  6
FT-54185    01/09/2019  03/08/2019  3
FT-40664    01/09/2019  03/08/2019  3
FT-56984    02/09/2019  03/08/2019  3
FT-29238    02/09/2019  03/08/2019  3
FT-45919    02/09/2019  03/08/2019  3
FT-35447    01/09/2019  04/08/2019  2
FT-56984    02/09/2019  04/08/2019  2
FT-89801    02/09/2019  04/08/2019  2
FT-29238    02/09/2019  04/08/2019  2
FT-70293    03/09/2019  04/08/2019  2

Я хочу создать новый фрейм данных, который будет иметь такие же следующие поля вместе с новым полем, в котором будет случайное число от 1 до 100, ноколичество строк будет зависеть от s_count. например, первая запись будет иметь 6 строк, вторая - 6 строк, третья - 3 строки и т. д.

Ожидаемый вывод для строки 1 в df:

I_Code      Date_1      Date_2  s_count num
FT-35447    01/09/2019  02/08/2019  6   10
FT-35447    01/09/2019  02/08/2019  6   13
FT-35447    01/09/2019  02/08/2019  6   56
FT-35447    01/09/2019  02/08/2019  6   45
FT-35447    01/09/2019  02/08/2019  6   34
FT-35447    01/09/2019  02/08/2019  6   90

Есть ли у панды способ достичь того же.

Спасибо

1 Ответ

2 голосов
/ 27 октября 2019

Используйте Index.repeat с DataFrame.loc для дублированных строк, а затем установите новые значения столбцов на numpy.random.randint:

df = df.loc[df.index.repeat(df['s_count'])].reset_index(drop=True)
df['num'] = np.random.randint(1, 100, size=len(df))

print (df.head(20))
      I_Code      Date_1      Date_2  s_count  num
0   FT-35447  01/09/2019  02/08/2019        6   83
1   FT-35447  01/09/2019  02/08/2019        6   84
2   FT-35447  01/09/2019  02/08/2019        6   11
3   FT-35447  01/09/2019  02/08/2019        6   83
4   FT-35447  01/09/2019  02/08/2019        6   90
5   FT-35447  01/09/2019  02/08/2019        6   12
6   FT-40664  01/09/2019  02/08/2019        6   33
7   FT-40664  01/09/2019  02/08/2019        6   69
8   FT-40664  01/09/2019  02/08/2019        6   11
9   FT-40664  01/09/2019  02/08/2019        6   29
10  FT-40664  01/09/2019  02/08/2019        6   46
11  FT-40664  01/09/2019  02/08/2019        6   44
12  FT-54185  01/09/2019  03/08/2019        3   92
13  FT-54185  01/09/2019  03/08/2019        3   46
14  FT-54185  01/09/2019  03/08/2019        3   45
15  FT-40664  01/09/2019  03/08/2019        3   87
16  FT-40664  01/09/2019  03/08/2019        3   88
17  FT-40664  01/09/2019  03/08/2019        3   78
18  FT-56984  02/09/2019  03/08/2019        3   89
19  FT-56984  02/09/2019  03/08/2019        3   18
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...