如何对DataFrame中的重复名称分组并求和对应数值?
搞定DataFrame重复名称分组求和的问题
嘿,我来帮你解决这个分组求和的问题!从你给出的DataFrame前几行来看,大概率是你在使用groupby或者apply时没踩对关键点,比如列名没设置好、数值类型不对,或者调用方法的方式有问题。下面一步步来解决:
第一步:先把你的DataFrame列名捋清楚
从你贴的内容看,你的数据应该是两列:地区名称和对应的数值,但可能你的DataFrame默认用了无意义的列名(比如0、1),这会导致groupby找不到正确的分组列。先确认列名:
print(df.columns)
如果输出是类似RangeIndex(start=0, stop=2, step=1)或者Index(['0', '1'], dtype='object'),那先给列起个明确的名字:
df.columns = ['region', 'value']
第二步:用groupby轻松完成分组求和
这时候就可以按地区名称分组,然后对数值列求和了:
summed_result = df.groupby('region')['value'].sum().reset_index()
拆解一下这个代码:
groupby('region'):把相同地区名称的行归为一组['value'].sum():对每个分组里的数值列做求和操作reset_index():把分组后的索引(地区名称)变回普通列,这样结果看起来更规整
运行完后,你打印summed_result就能得到想要的结果:
region value 0 AMAZONAS 17 1 ANTIOQUIA 2911
为啥你之前的尝试没成功?
大概率是这几个原因之一:
- 列名不对:你用了不存在的列名去分组,自然会报错
- 数值列不是数字类型:如果
value列存的是字符串,求和肯定会失败,这时候要先转类型:df['value'] = pd.to_numeric(df['value']) - 聚合方法用错了:比如用
groupby后没指定要聚合的列,或者用了apply但写的逻辑有问题
要是还是有问题,把你之前写的代码贴出来,我帮你排查具体问题~
内容的提问来源于stack exchange,提问作者Carolina
相关产品推荐
相关产品推荐

