Pandas Dataframe - 在A列每个标签下找B列的和
假设我们有以下数据:
... 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]