У меня есть фрейм данных, который содержит данные наблюдений в виде:
import pandas as pd
d = {'humanID': [1, 1, 2,2,2,2 ,2,2,2,2], 'dogID':
[1,2,1,5,4,6,7,20,9,7],'month': [1,1,2,3,1,2,3,1,2,2]}
df = pd.DataFrame(data=d)
Следуют df
humanID dogID month
0 1 1 1
1 1 2 1
2 2 1 2
3 2 5 3
4 2 4 1
5 2 6 2
6 2 7 3
7 2 20 1
8 2 9 2
9 2 7 2
Всего у нас два human
и двадцать dog
и выше df
содержит наблюдаемые данные.Например:
Первый ряд означает: human1
принять dog1
в январе
Второй ряд означает: human1
принять dog2
в январе
третий ряд означает: human2
принять dog1
в феврале
==============================================================================
Моя цельслучайным образом генерирует two
ненаблюдаемые данные для каждого (human, month)
, которые не появляются в исходных наблюдаемых данных.
как для human1
в January
, он не принимает собаку [3,4,5,6,7,..20]
И яхотите случайным образом создать два ненаблюдаемых образца (human, month)
в тройной форме
humanID dogID month
1 20 1
1 10 1
Однако следующий образец не допускается, поскольку он отображается в оригинале df
humanID dogID month
1 2 1
Для human1
у него нет активности в феврале, поэтому нам не нужно выбирать ненаблюдаемые данные.
Для human2
у него активность за январь, февраль и март.Поэтому для каждого месяца мы хотим случайным образом создавать ненаблюдаемые данные.Например, в январе human2
принимает dog1
, dog4
и god 20
.Две случайные ненаблюдаемые выборки могут быть
humanID dogID month
2 2 1
2 6 1
. Один и тот же процесс может быть использован для февраля и марта.
Я хочу поместить все ненаблюдаемые данные в один кадр данных, например: unobserved
humanID dogID month
0 1 20 1
1 1 10 1
2 2 2 1
3 2 6 1
4 2 13 2
5 2 16 2
6 2 1 3
7 2 20 3
Есть ли быстрый способ сделать это?
PS: это кодовое интервью для начинающей компании.