【发布时间】:2019-11-02 18:02:41
【问题描述】:
我在以下视图中有 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
我需要根据 PuppyWeights 数据框将有关幼犬体重的信息按月添加到 Dogs 数据框。如果 Dog 有超过 1 个孩子,例如:Dog2、Dog3-> 我需要对每个月的体重值取平均值 PuppyName。例如:
Dog2 应该是 Jack 和 Foxin 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 数据框?
如有任何想法,我将不胜感激。谢谢)
【问题讨论】:
标签: python pandas dataframe pandas-groupby melt