好吧,假设我有一个 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
提交
取消