首页 > 解决方案 > Pandas 中的分组和求和

问题描述

我有一个包含两列的数据框。第一列包含years,第二列包含value. 我想对某一年进行分组并将其更改为该组的一个名称并添加所有相应的值。

例如,下面是小数据集

years    value
1950      3
1951      1
1952      2
1961      4
1964      10
1970      34

输出应该看起来像

years    value
1950's     6
1960's     14
1970's     34

我在 Python 中使用pandas并尝试了很多方法,转换为 dict 或 for 循环,但每次我都无法达到预期的效果。有人可以帮忙吗?

标签: pythonpandasdataframe

解决方案


使用整数除法、倍数10、强制转换为字符串并添加s并使用此系列进行聚合sum

y = ((df['years'] // 10) * 10).astype(str) + 's'

df = df.groupby(y)['value'].sum().reset_index()
print (df)
   years  value
0  1950s      6
1  1960s     14
2  1970s     34

详情

print (y)
0    1950s
1    1950s
2    1950s
3    1960s
4    1960s
5    1970s
Name: years, dtype: object

推荐阅读