python - 如何选择数据框中的特定行,对它们进行分组并使用 python 求和?
问题描述
以下是一些示例数据:
mydf = {'Month': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
'Freq': [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]
}
my_df = pd.DataFrame(mydf, columns=['Month', 'Freq'])
my_df
Month Freq
0 1 5
1 2 10
2 3 15
3 4 20
4 5 25
5 6 30
6 7 35
7 8 40
8 9 45
9 10 50
10 11 55
11 12 60
如何创建一个新的数据框,将月份分组为季节并找到每个季节频率的总和,而输出仍然是一个数据框?
我想要这样的东西:(冬天是月份 = 12、1、2)(春天是月份 = 3、4、5)(等等....)
Season Freq
0 Winter 75
1 Spring 60
2 Summer 105
3 Autumn 150
我试图选择行并将它们连接起来,但不幸的是我不断收到错误。
解决方案
最简单的方法之一是创建一个月到季节的映射器,然后使用map
panda 的函数
season_map = {1: 'Winter', 2: 'Winter', 3: 'Spring', 4: 'Spring', 5: 'Spring', 6: 'Summer', 7: 'Summer', 8: 'Summer', 9:'Autumn', 10:'Autumn', 11: 'Autumn', 12: 'Winter'}
my_df.loc[:, 'season'] = my_df.Month.map(season_map)
my_df.groupby('season').freq.sum()
如果您不想手动创建映射器,可以使用这个答案:Python: Datetime to season
推荐阅读
- migration - 上线一个新的、更新的 PrestaShop 网站
- c# - 返回实现的正确类型签名
- django - 如何使用 url 中的参数从 django 的数据库中获取数据?
- firebase - 允许在 Realtime Firebase 数据库中写入一个孩子
- java - 如何在给定此代码的情况下打印广度优先横向的结果(Java)
- c# - Xamarin.Forms 微调器 TimePicker
- scala - 在每次列传递以进行转换时迭代数据框
- c# - ASP.Net Core 中的异步 PartialView
- powershell - Powershell IE 自动化 - 无法为文本区域设置值
- html - 如何在 Elementor 中删除小部件和布局子项之间的间隙/空间?