首页 > 解决方案 > 根据两个不同的列对一列求和

问题描述

我试图通过控制下表中的年份和代码来总结 subsec 列。这样,要创建一个新列并在此处添加 df.subsec 的总和。

我的桌子在此处输入图像描述

最后我需要的桌子在此处输入图像描述

我通过调整代码尝试了这个数据科学链接,但它不起作用:

dfc['k']=dfc.groupby(['ticker', 'year'])['subsec'].sum().sum(level=['ticker', 'year'])

标签: pythonpandassumpandas-groupby

解决方案


您可以考虑以下示例:

import pandas as pd
import numpy as np
df = pd.DataFrame()
df['a'] = ['a', 'b', 'a', 'a', 'b', 'c']
df['yr'] = [2008, 2008, 2008, 2009, 2008, 2008]
df['sub'] = [10, 15, 17, 15, 10, 10]
print(df)
   a    yr  sub
0  a  2008   10
1  b  2008   15
2  a  2008   17
3  a  2009   15
4  b  2008   10
5  c  2008   10

我们可以将 groupby 和 sum() 函数应用于上面的数据框,最后 to_frame() 函数会给它一个你想要的列名,然后你可以重置索引。

df.groupby(['a', 'yr'])['sub'].sum().to_frame('Total').reset_index()
   a    yr  Total
0  a  2008     27
1  a  2009     15
2  b  2008     25
3  c  2008     10

推荐阅读