首页 > 解决方案 > 如何聚合熊猫数据框时间戳列从几天到几年,计算加权平均值

问题描述

我正在使用具有以下格式的熊猫数据框:

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_startvalidity_end每年的天数作为权重),并按列分组从col_1col_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']
})

提前致谢。

标签: pythonpandastimestampaggregation

解决方案


推荐阅读