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

如何在Pandas DataFrame中按多列分组求和并保留原格式

在Pandas DataFrame中按多列分组并对多列求和(保留原始格式)

需求说明

需要对DataFrame按State、County、Name三列的唯一组合分组,分别对Checking和Savings列求和,同时结果保持与原DataFrame一致的普通格式(无多层索引/嵌套列)。

原始数据与代码

import pandas as pd

df = pd.DataFrame({"State": ["NM", "NM", "NM", "TX", "TX", "TX", "TX", "TX"],
                   "County": ["Lea", "Lea", "Chaves", "Lamb", "Lamb", "Lubbock", "Lubbock", "Denton"],
                   "Name": ["Mike", "Mike", "Cash", "Mary", "Mary", "Addison", "Addison", "Jen"],
                   "Checking": [50, 100, 25, 1000, 360, 9, 100, 200],
                   "Savings": [100, 200, 75, 300, 300, 10000, 250, 75]})

print("原始数据:")
print(df)

原始数据输出:

State   County     Name  Checking  Savings
0      NM      Lea     Mike        50      100
1      NM      Lea     Mike       100      200
2      NM   Chaves     Cash        25       75
3      TX     Lamb     Mary      1000      300
4      TX     Lamb     Mary       360      300
5      TX  Lubbock  Addison         9    10000
6      TX  Lubbock  Addison       100      250
7      TX   Denton      Jen       200       75

解决方案代码

使用groupby指定分组列,结合sum()求和,通过as_index=False参数确保分组列保持为普通列,而非索引:

# 按三列分组,对指定列求和,保留原格式
result_df = df.groupby(["State", "County", "Name"], as_index=False)[["Checking", "Savings"]].sum()

print("\n分组求和结果:")
print(result_df)

输出结果

State   County     Name  Checking  Savings
0     NM   Chaves     Cash        25       75
1     NM      Lea     Mike       150      300
2     TX   Denton      Jen       200       75
3     TX     Lamb     Mary      1360      600
4     TX  Lubbock  Addison       109    10250

关键说明

  • groupby(["State", "County", "Name"]):指定需要分组的多列
  • as_index=False:核心参数,避免分组列转换为DataFrame的索引,保证结果格式与原数据一致
  • [["Checking", "Savings"]].sum():仅对指定的数值列执行求和操作,其他分组列自动保留唯一值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:30:26