如何在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
相关产品推荐
相关产品推荐

