簡體   English   中英

重新定義在熊貓中分組的一年

[英]Redefining a year to group in pandas

我有一些價格數據作為時間序列。 我正在嘗試按年和月對價格進行分組和平均。 這里有一個問題,我想從 7 月到 6 月有一年,例如 2015 年是 2015 年 7 月 - 2016 年 6 月(定義為作物年),因此 7 月至 6 月的“作物月”也需要為 1-12。 無論如何要實現這是熊貓。 我的代碼中的邏輯似乎有缺陷,並沒有給我想要的結果。 我嘗試使用帶有一些 if 語句的循環,但我的邏輯在某處丟失了。 我在下面發布了結果數據框。 如您所見,作物年度數據是錯誤的。 任何有關如何處理代碼的幫助都會很棒。

'''

pxdata = ek.get_timeseries(['Wc1','BL2c1', 'W13.5-FOBRU=AGRP'], fields='CLOSE', start_date='2009-01-01')

pxdata.loc[:,'Crop Month'] = 0
pxdata.loc[:,'Crop Year'] = 0
pxdata.iloc[0,-1] = 2015
pxdata.iloc[0,-2] = 8
for i in range(1, len(pxdata)):
    if pxdata.index[i].month==7:
        pxdata.iloc[i,-2]=1
    elif pxdata.index[i].month>pxdata.index[i-1].month:
        pxdata.iloc[i,-2]=pxdata.iloc[i-1,-2]+1
    else:
        pxdata.iloc[i,-2]=pxdata.iloc[i-1,-2]
    if pxdata.iloc[i-1,-2]==12 and pxdata.iloc[i,-2]==1 :
        pxdata.iloc[i,-1]=pxdata.iloc[i-1,-1]+1
    else:
        pxdata.iloc[i,-1]=pxdata.iloc[i-1,-1]

'''

提前謝謝各位

在此處輸入圖片說明

將您的日期設置為索引,因此您可以使用dataframe.loc['2015-07-01':'2016-06-01']來選擇您的數據。

pandas.DataFrame.loc

然后為您要選擇的時間序列創建一個日期范圍。

start = pd.date_range('2015-06-01', periods=4, freq='12M') end = pd.date_range('2016-07-01', periods=4, freq='12M') for start, end in list(zip(start,end)): print(start, end)

pandas.date_range

現在您可以通過loc[start:end]選擇時間段。

如果要選擇平均值,可以使用dataframe.mean()

pandas.DataFrame.mean

祝你好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM