Pandas Dataframe - 在A列每个标签下找B列的和

2 投票
1 回答
551 浏览
提问于 2025-04-18 04:36

假设我们有以下数据:

...    col1    col2    col3
 0      A      1       info
 1      A      2       other
 2      B      3       blabla

我想用Python的pandas库来找出第一列中的重复项,并根据第二列的值把它们加起来。

在Python中,我会这样做:

l = [('A',1), ('A',2), ('B',3)]
d = {}
for i in l:
    if(i[0] not in d.keys()):
        d[i[0]]=i[1]
    else:
        d[i[0]]=d[i[0]]+i[1]
print(d)

所以最后的结果会是:

{'A': 3, 'B': 3}

有没有简单的方法可以用pandas做到同样的事情?

1 个回答

6

使用 DataFrame.groupby().sum() 方法:

In [1]: import pandas

In [2]: df = pandas.DataFrame({"col1":["A", "A", "B"], "col2":[1,2,3]})

In [3]: df.groupby("col1").sum()
Out[3]: 
      col2
col1      
A        3
B        3

In [4]: df.groupby("col1").sum().reset_index()
Out[4]: 
  col1  col2
0    A     3
1    B     3

[2 rows x 2 columns]

撰写回答