You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python与Pandas实现特定规则的分组平均值计算

Pandas 按规则生成新增列newcol

原始数据

原始DataFrame结构如下:

Lat          Lon        Year    Area    Value   group_a group_b  
-31.3484    -60.0629    2019    70  24  a   ia
-26.8443    -64.5456    2020    492 12  a   ia
-27.6536    -62.2072    2017    173 111 b   md
-26.4552    -61.4804    2020    255 76  b   ct
-35.6044    -63.5238    2019    204 12  a   de
-35.6044    -63.5238    2021    124 26  c   ca

需求说明

  • 找出Lat和Lon值均重复的行,为这些行的newcol列赋值为对应坐标组Value的平均值(示例中最后两行的newcol为19);
  • 其余行的newcol按group_a+group_b的组合计算Value的平均值(示例中group_a=a且group_b=ia的行newcol为18)。

实现代码

import pandas as pd

# 构建原始DataFrame
data = {
    'Lat': [-31.3484, -26.8443, -27.6536, -26.4552, -35.6044, -35.6044],
    'Lon': [-60.0629, -64.5456, -62.2072, -61.4804, -63.5238, -63.5238],
    'Year': [2019, 2020, 2017, 2020, 2019, 2021],
    'Area': [70, 492, 173, 255, 204, 124],
    'Value': [24, 12, 111, 76, 12, 26],
    'group_a': ['a', 'a', 'b', 'b', 'a', 'c'],
    'group_b': ['ia', 'ia', 'md', 'ct', 'de', 'ca']
}
df = pd.DataFrame(data)

# 计算两类分组的Value平均值
lat_lon_mean = df.groupby(['Lat', 'Lon'])['Value'].transform('mean')
group_mean = df.groupby(['group_a', 'group_b'])['Value'].transform('mean')

# 先给newcol赋值为分组平均值,再替换坐标重复行的值
df['newcol'] = group_mean
lat_lon_dup_rows = df.duplicated(['Lat', 'Lon'], keep=False)
df.loc[lat_lon_dup_rows, 'newcol'] = lat_lon_mean[lat_lon_dup_rows]

# 打印结果
print(df.to_string(index=False))

运行结果

运行代码后得到的最终结果如下:

Lat      Lon  Year  Area  Value group_a group_b  newcol
-31.3484 -60.0629  2019    70     24       a      ia      18
-26.8443 -64.5456  2020   492     12       a      ia      18
-27.6536 -62.2072  2017   173    111       b      md     111
-26.4552 -61.4804  2020   255     76       b      ct      76
-35.6044 -63.5238  2019   204     12       a      de      19
-35.6044 -63.5238  2021   124     26       c      ca      19

内容的提问来源于stack exchange,提问作者user308827

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:48:38