python - 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 循环,但每次我都无法达到预期的效果。有人可以帮忙吗?
解决方案
使用整数除法、倍数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
推荐阅读
- python-3.x - 如何创建一个计算列表或字典中整数频率的程序
- java - 当我用 wildfly 开始我的项目时出现问题
- python - 使用 mysql 创建的表,但我无法使用 python 从中选择
- c# - 我通过 ajax 将内部服务器错误发送到控制器,以便通过表单将文件发送到控制器
- python - 拆分字符串并替换在一列数据框中
- java - 如何在 Android Studio 中存储用户给出的计数和用户在活动中的选择
- android - 使 Lottie 动画仅在播放时可见
- google-maps-api-3 - 删除谷歌地图标记上的边界图标
- excel - 如何使用 VBA 将 Nuance Power PDF 中的注释字段中的文本导出到 Excel?
- ember.js - 迁移到组件的本机类时出现意外的令牌错误