在下面的数据框中(小片段显示,实际数据帧从2000年到2014年的时间跨度),我想计算年平均值,但是从一年的9月开始,直到明年的5月。
Cnt Year JD Min_Temp
S 2000 1 277.139
S 2000 2 274.725
S 2001 1 270.945
S 2001 2 271.505
N 2000 1 257.709
N 2000 2 254.533
N 2000 3 258.472
N 2001 1 255.763
我可以使用以下代码计算年平均值(1月 - 12月):
df['Min_Temp'].groupby(df['YEAR']).mean()
如何将此代码改编为从第一年的9月到明年的5月?
- 编辑:根据以下评论,您可以假设MONTH列也可用,指定每行的月份
答案 0 :(得分:1)
不确定哪个列是指月份还是缺少,但过去我使用快速而肮脏的方法来指定自定义季节(如果有人找到更优雅的路线,则感兴趣)。
我使用雅虎财经数据来演示方法,除非你的一个专栏是月?
编辑要求数据框按日期升序排序
import pandas as pd
import pandas.io.data as web
import datetime
start = datetime.datetime(2010, 9, 1)
end = datetime.datetime(2015, 5, 31)
df = web.DataReader("F", 'yahoo', start, end)
#Ensure date sorted --required
df = df.sort_index()
#identify custom season and set months june-august to null
count = 0
season = 1
for i,row in df.iterrows():
if i.month in [9,10,11,12,1,2,3,4,5]:
if count == 1:
season += 1
df.set_value(i,'season', season)
count = 0
else:
count = 1
df.set_value(i,'season',None)
#new data frame excluding months june-august
df_data = df[~df['season'].isnull()]
df_data['Adj Close'].groupby(df_data.season).mean()