0
isSpring = False
# Calculate season e.g. spring wheat season is only ~ May - August
if isSpring:
# Change from name of month to a number e.g. January is 1, December is 12
idx_srt_mon = strptime('May', '%B').tm_mon
idx_end_mon = strptime('September', '%B').tm_mon
else:
idx_srt_mon = strptime('September', '%B').tm_mon
idx_end_mon = strptime('August', '%B').tm_mon
# Assign seasons, works for crops with season within 1 year and also winter crops with seasons spanning years
df['Season'] = numpy.nan
first_yr = df.YEAR.unique()[0]
for i, row in df.iterrows():
cur_month = row.MONTH
cur_yr = row.YEAR
if cur_month < idx_srt_mon:
if not isSpring and (cur_month < idx_end_mon):
if cur_yr > first_yr:
df.set_value(i, 'Season', cur_yr - 1)
else:
if cur_month <= idx_end_mon or not isSpring:
df.set_value(i, 'Season', cur_yr)
在數據幀的計算:https://www.dropbox.com/s/gwyim6kc83mw3yf/df.csv?dl=0,我想補充一個新的列,其如下分配一個「賽季」:加快熊貓iterrows可以在這裏四季
如果isSpring爲TRUE,那麼當前一年季從idx_srt_mon分配給所有行idx_end_mon(五月至九月)
如果isSpring爲FALSE,那麼本賽季開始在當年九月,去高達明年八月。在整個2年的整個時期內,本賽季是它開始的一年。例如,如果開始是2000年9月,那麼賽季將會從2000年的2000年9月2001年8月
對於所有其他情況,季節numpy.nan
我已經使用df.iterrows做這個計算,但它很慢。我如何加快速度?
很好,ty。再也不要使用它! – user308827