猿问

Python:根据 Key 和附加条件将聚合列添加到 DataFrame

我在以下视图中有 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框中。如果 Dog 有超过 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数据框中?


我会很感激任何想法。谢谢)


侃侃无极
浏览 165回答 1
1回答

慕工程0101907

这是melt, dogsthenmerge和groupbydf2 = dogs.melt(id_vars=['DogID','DogWeight'], var_name="Puppies", value_name='PuppyName').dropna()df2.merge(df,on='PuppyName',how='left').groupby('DogID').mean()Out[423]:        DogWeight     Jan17     Jun18     Dec18  April19DogID                                                  Dog1        12.7  0.800000  1.700000  3.700000      4.6Dog2        15.5  0.833333  1.766667  3.066667      4.0Dog3        10.2  0.800000  1.700000  2.800000      4.4Dog4        16.9  0.550000  1.250000  2.950000      3.9
随时随地看视频慕课网APP

相关分类

Python
我要回答