python - 如何聚合熊猫数据框时间戳列从几天到几年,计算加权平均值
问题描述
我正在使用具有以下格式的熊猫数据框:
pd.DataFrame({
'Col_1': ['AAA', 'AAA', 'AAA', 'FFF', 'FFF'],
'Col_2': ['BBB', 'BBB', 'BBB', 'GGG', 'GGG'],
'Col_3': ['CCC', 'CCC', 'CCC', 'HHH', 'HHH'],
'Col_4': ['DDD', 'DDD', 'DDD', 'III', 'III'],
'Col_5': ['EEE', 'EEE', 'EEE', 'JJJ', 'JJJ'],
'validity_start': ['2008-01-01', '2008-08-01',
'2009-09-01', '2011-01-01', '2011-04-01'],
'validity_end': ['2008-07-30', '2009-08-30',
'2010-12-31', '2011-03-31', '2012-12-31'],
'Value': [111.10128, 222.28392, 333.28392, 444.46656, 555.34547]
})
我需要帮助来聚合价值列,按年加权平均值(考虑validity_start
和validity_end
每年的天数作为权重),并按列分组从col_1
到col_4
。结果应如下表所示:
pd.DataFrame({
'Col_1': ['AAA', 'AAA', 'AAA', 'FFF', 'FFF'],
'Col_2': ['BBB', 'BBB', 'BBB', 'GGG', 'GGG'],
'Col_3': ['CCC', 'CCC', 'CCC', 'HHH', 'HHH'],
'Col_4': ['DDD', 'DDD', 'DDD', 'III', 'III'],
'Col_5': ['EEE', 'EEE', 'EEE', 'JJJ', 'JJJ'],
'YEAR': ['2008', '2009', '2010', '2011', '2012'],
'Value': ['157.7066', '259.3853', '333.2839', '527.7772', '555.3455']
})
提前致谢。
解决方案
推荐阅读
- json - 嵌套结构的解组字段不起作用
- r - geom_tile : 清洁对角线瓷砖边框
- php - PHP:一个对象的array_filter?
- php - 正则表达式匹配从右到左
- javascript - 在 postgres 中动态更新字段而不使用 || 操作员
- c++ - 复制二维结构数组c ++
- microsoft-graph-api - 将应用程序连接到 OneDrive for Business 中国
- php - Laravel 数组和 JSON 转换
- javascript - 如何从 javascript 中的 base 64 字符串获取图像文件大小?
- mysql - mysql数据库复合键问题