gpt4 book ai didi

python - Pandas 基于行的列总和

转载 作者:行者123 更新时间:2023-12-01 01:09:57 25 4
gpt4 key购买 nike

我有一个数据框:

      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的回答,我得到了以下结果:

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, :]

最佳答案

df.loc[df.highest_temp.cumsum()<600,:]

这通过条件“hightest_temp 之和小于 600”选择子数据帧。您可以再次应用 cumsum,例如

data = df.loc[df.highest_temp.cumsum()<600, :]
data.loc[:, 'cumsum_t'] = data.highest_temp.cumsum()

此外,您还可以使用groupby方法重置每个月的cumsum:

value = 600                                                                       
cumsums = df.groupby(['month']).transform('cumsum')['highest_temp']
df.loc[cumsums < value, 'cumsum_t'] = cumsums[cumsums < value]
result = df.loc[cumsums < value, :]

关于python - Pandas 基于行的列总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54955417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com