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

Pandas无法按District列匹配字符串计算对应行总和的解决方法

Pandas按District列分组求和异常解决方案

问题根因

当前使用的分组代码同时传入了HS Code、District两个分组键,最终返回的是HS Code与District两两组合维度的汇总结果,并非单独按District维度聚合的总值,因此无法得到预期的各地区单独汇总数据。
之前运行的代码及对应输出参考:
之前的代码运行结果截图

g1 = df1.groupby(['HS Code','District'])['April, 21 To February, 22 Value(US $)'].sum()

实现方法

方法1:仅生成各District单独的总值

直接移除分组键中多余的HS Code字段,仅以District作为分组维度即可,运行前建议先做数据清洗避免统计偏差:

  • 清洗District字段:去除字符串前后多余空格,避免同个地区因为隐藏空格被拆分为多个分组
  • 清洗数值列:如果目标值列带$符号、千分位逗号,先替换内容后转为数值类型,否则求和逻辑会出错
# 前置数据清洗
df1['District'] = df1['District'].str.strip()
df1['April, 21 To February, 22 Value(US $)'] = (
    df1['April, 21 To February, 22 Value(US $)']
    .replace(r'[$,]', '', regex=True)
    .astype(float)
)

# 按District分组求和,as_index=False返回标准DataFrame格式
district_sum = df1.groupby('District', as_index=False)['April, 21 To February, 22 Value(US $)'].sum()

# 提取南安达曼、尼科巴两个指定地区的汇总值
target_res = district_sum[district_sum['District'].isin(['南安达曼', '尼科巴'])]

如果需要索引为地区名的Series格式结果,去掉代码里的as_index=False参数即可。

方法2:同时保留细粒度分组和District维度汇总

如果需要同时保留「HS Code+District」的细粒度汇总、以及各District单独的总值,可以用数据透视表的边距参数自动生成小计:

summary_table = df1.pivot_table(
    index=['HS Code', 'District'],
    values='April, 21 To February, 22 Value(US $)',
    aggfunc='sum',
    margins=True,
    margins_name='地区小计'
)

运行后结果中每个District分类下会自动生成该地区所有HS Code对应的总值汇总行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:54:20