我在以下視圖中有 2 個數據框: dogs數據框是:DogID PuppyName1 PuppyName2 PuppyName3 PuppyName4 DogWeightDog1 Nick NaN NaN NaN 12.7Dog2 Jack Fox Rex NaN 15.5 Dog3 Snack NaN NaN NaN 10.2Dog4 Yosee Petty NaN NaN 16.9puppyWeights數據框是:PuppyName Jan17 Jun18 Dec18 April19 Nick 0.8 1.7 3.7 4.6Jack 0.6 1.3 2.8 3.5 Fox 0.9 1.7 3.4 4.3Rex 1.0 2.3 3.0 4.2Snack 0.8 1.7 2.8 4.4Yosee 0.6 1.2 3.1 4.3Petty 0.5 1.3 2.8 3.5 Dogs我需要根據數據框將有關幼犬體重的信息按月添加到數據PuppyWeights框中。如果 Dog 有超過 1 個孩子,例如:Dog2, Dog3-> 我需要對每個月的體重值取平均值PuppyName。例如: Dog2應該是表Jack和表Fox中的值之間的平均值PuppyWeights:DogID Jan17 Jun18 Dec18 April19 DogWeightDog2 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 DogWeightDog1 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.2Dog4 0.55 1.25 2.95 3.9 16.9 如何按月份將體重信息添加到dogs數據框中?我會很感激任何想法。謝謝)
1 回答

慕工程0101907
TA貢獻1887條經驗 獲得超5個贊
這是melt, dogsthenmerge和groupby
df2 = 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 April19
DogID
Dog1 12.7 0.800000 1.700000 3.700000 4.6
Dog2 15.5 0.833333 1.766667 3.066667 4.0
Dog3 10.2 0.800000 1.700000 2.800000 4.4
Dog4 16.9 0.550000 1.250000 2.950000 3.9
添加回答
舉報
0/150
提交
取消