我有以下数据帧:
df2 = pd.DataFrame({'season':[1,1,1,2,2,2,3,3],'value' : [-2, 3,1,5,8,6,7,5], 'avail':[3,3,3,8,8,4,25,25],'test2':[4,5,7,8,9,10,11,12]},index=['2020', '2020', '2020','2020', '2020', '2021', '2021', '2021'])
df2.index= pd.to_datetime(df2.index)
df2.index = df2.index.year
print(df2)
avail season test2 value
2020 3 1 4 -2
2020 3 1 5 3
2020 3 1 7 1
2020 8 2 8 5
2020 8 2 9 8
2021 4 2 10 6
2021 25 3 11 7
2021 25 3 12 5
我想有效地计算每年的“可用”列的总和。这里的困难在于每个季节只能求一个“可用”值。例如,对于2020年,我想求和3+8=11。你知道吗
预期结果(“sum\u avail”列):
avail season test2 value sum_avail
2020 3 1 4 -2 11
2020 3 1 5 3 11
2020 3 1 7 1 11
2020 8 2 8 5 11
2020 8 2 9 8 11
2021 4 2 10 6 29
2021 25 3 11 7 29
2021 25 3 12 5 29
你需要
groupby
+transform
+np.unique
:或者
以下是一种方法,它取每个指数/季节对中的第一个值,然后将它们相加:
IIUC,
transform
+set
相关问题 更多 >
编程相关推荐