好吧,假設我有一個 df 是不同房屋中動物的頻率: Animal Frequency0 Dog 51 Cat 72 Cat 23 Fish 24 Dog 8現在假設我不關心哪個家庭,我只想在頻率下顯示每只動物的平均值,所以我得到了平均值:mean = df.groupby(['Animal']).mean()現在這給了我一個系列(或我實際更大的 df 中的數據框),索引作為不同的動物: FrequencyDog 6.5Cat 4.5Fish 2現在我只希望我原來的 df 是: Animal Frequency0 Dog 6.51 Cat 4.52 Cat 4.53 Fish 24 Dog 6.5嘗試使用嵌入式 for 循環(請記住我的實際項目,平均值返回數據幀而不是系列):for idx in df.index: for item in mean.Animal: if df.Animal[idx] == mean.Animal[item]: df.at[idx, 'Frequency'] = mean.at[item, 'Frequency']上面的代碼只是無限期地運行,實際的數據幀非常大。
1 回答

拉莫斯之舞
TA貢獻1820條經驗 獲得超10個贊
用于GroupBy.transform在與平均值聚合后保留原始形狀:
df['Frequency'] = df.groupby('Animal').transform('mean')
輸出
Animal Frequency
0 Dog 6.5
1 Cat 4.5
2 Cat 4.5
3 Fish 2.0
4 Dog 6.5
添加回答
舉報
0/150
提交
取消