У меня есть 2 кадра данных в следующем представлении: dogs
кадр данных:
DogID PuppyName1 PuppyName2 PuppyName3 PuppyName4 DogWeight
Dog1 Nick NaN NaN NaN 12.7
Dog2 Jack Fox Rex NaN 15.5
Dog3 Snack NaN NaN NaN 10.2
Dog4 Yosee Petty NaN NaN 16.9
puppyWeights
кадр данных:
PuppyName Jan17 Jun18 Dec18 April19
Nick 0.8 1.7 3.7 4.6
Jack 0.6 1.3 2.8 3.5
Fox 0.9 1.7 3.4 4.3
Rex 1.0 2.3 3.0 4.2
Snack 0.8 1.7 2.8 4.4
Yosee 0.6 1.2 3.1 4.3
Petty 0.5 1.3 2.8 3.5
Мне нужно добавить информацию о весе щенковпо месяцам до Dogs
кадра данных на основе PuppyWeights
кадра данных.Если у собаки более 1 ребенка, например: Dog2
, Dog3
-> мне нужно принять среднее значение веса на PuppyName
для каждого месяца.Например: Dog2
должно быть средним между значениями для Jack
и Fox
в таблице PuppyWeights
:
DogID Jan17 Jun18 Dec18 April19 DogWeight
Dog2 0.75 1.5 3.1 3.9 15.5
Я пытался использовать функцию melt
для преобразования ['PuppyName1', 'PuppyName2', 'PuppyName3', 'PuppyName4']
столбцов в строки.
Но я не представляю, как добавить информацию о месяцах в dogs
фрейм данных с агрегацией по среднему значению, когда у собаки более одного ребенка.
df2 = dogs.melt(id_vars=['DogID','DogWeight'], var_name="Puppies", value_name='PuppyName')
Желаемый результат:
DogID Jan17 Jun18 Dec18 April19 DogWeight
Dog1 0.8 1.7 3.7 4.6 12.7
Dog2 0.75 1.5 3.1 3.9 15.5
Dog3 0.8 1.7 2.8 4.4 10.2
Dog4 0.55 1.25 2.95 3.9 16.9
Как я могу добавить информацию о весе по месяцам к dogs
кадру данных?
Буду признателен за любую идею.Спасибо)