我有一个数据框:
year month day highest_temp
0 1961 1 1 7.9
1 1961 1 2 9.2
2 1961 1 3 7.3
3 1961 1 4 11.5
4 1961 1 5 7.7
5 1961 1 6 8.6
6 1961 1 7 9.1
7 1961 1 8 11.8
8 1961 1 9 6.9
我想对从2月1日到这个数据框的所有年份的总和>;=600的最高温度列求和。我尝试了iterrows(),sum(),但没有得到想要的结果。谢谢你的帮助
编辑: 基于@bubble answer,我得到了以下结果:
57 1961 2 27 11.6 273.2
58 1961 2 28 11.7 284.9
59 1961 3 1 15.3 300.2
60 1961 3 2 18.9 319.1
.. ... ... ... ... ...
81 1961 3 23 15.5 584.3
82 1961 3 24 13.0 597.3
但是我仍然希望值超过阈值600。例如:在上面的结果中,我想要最后的值加上一行。 以下是我基于@bubble的代码:
value = 600
df2=df2.drop(df2[df2.month<2].index)
cumsums = df2.groupby(['year']).transform('cumsum')['highest_temp']
df2.loc[cumsums < value, 'cumsum_t'] = cumsums[cumsums < value]
result = df2.loc[cumsums < value, :]
这将按条件“hightest\u temp-less 600”条件选择子数据帧。你可以再次申请cumsum
此外,还可以使用
groupby
方法为每个月重置累计金额:相关问题 更多 >
编程相关推荐