Pandas如何为原数据集每行添加对应年龄分组的平均工资
2000行规模数据集新增年龄平均工资列的最优实现方案
- 若你已经完成分组统计生成了平均工资中间表,直接用
merge左连接即可,2000行的规模下完全没有性能压力,代码如下:
# 先重命名分组统计得到的平均工资列,避免和原表字段冲突 mean_df = mean.rename(columns={'lnWage':'averagewage'}) # 按age字段关联,把对应年龄的平均工资匹配到原表每一行 df = df.merge(mean_df, on='age', how='left')
- 若你还未生成中间表,更推荐用
transform一步完成操作,省去单独生成中间表、合并的冗余步骤,写法更简洁:
df['averagewage'] = df.groupby('age')['lnWage'].transform('mean')
两种方案在2000行的小规模数据集下的耗时差异可以忽略不计,transform不需要维护额外的中间表,代码可读性更高,优先选择;如果必须使用你已经生成好的分组平均表,用merge左连接就完全可以满足需求。
示例测试效果和你给出的场景完全一致:30岁对应的两条工资数据10、20,最终生成的averagewage列两行值均为15。
内容的提问来源于stack exchange,提问作者kedoink
相关产品推荐
相关产品推荐

