如何在Pandas中对DataFrame按ID分组计算值的总和?
解决Pandas中按ID分组求和的问题
这事儿在Pandas里太常见啦,用groupby()加sum()就能轻松解决,哪怕你有成千上万个ID也完全hold住,效率拉满。
先还原你的示例数据
首先咱们先把你给出的测试数据创建出来,方便演示:
import pandas as pd df = pd.DataFrame({ 'id': ['a', 'a', 'b', 'a', 'a'], 'value': [2, 1, 8, 0, 2] })
核心操作:分组求和
一行代码就能得到你想要的结果DataFrame:
result_df = df.groupby('id')['value'].sum().reset_index()
我拆解下这行代码的作用:
groupby('id'):把整个DataFrame按照id列的不同值分成一个个小组['value'].sum():对每个小组里的value列做求和运算reset_index():把原本作为索引的id转成普通列,这样得到的结构就和你想要的完全一致了
看看最终结果
运行完上面的代码,result_df就是你要的样子:
| id | value |
|---|---|
| a | 5 |
| b | 8 |
要是你觉得不需要把id转成普通列,只想保留以id为索引的Series格式,去掉reset_index()就行:
result_series = df.groupby('id')['value'].sum()
输出会是这样:
id a 5 b 8 Name: value, dtype: int64
这个方法处理大规模数据毫无压力,Pandas的groupby是经过优化的,成千上万的ID也能快速计算完成。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

