# Calculate climatologies of daily sea ice area in the Arctic from hindcast simulations # 12 periods: Jan-Jun, Feb-Jul, Mar-Aug, Apr-Sep, May-Oct, Jun-Nov, # Jul-Dec, Aug-Jan, Sep-Feb, Oct-Mar, Nov-Apr, Dec-May # 20 years: 1993-2016 # Convert climatologies into CSV file # # Script version 2.0.0 # # Script works with: # Python version 3.10 # # Package version # numpy: 1.26.4 # pandas: 2.2.2 # # Ver1.0.0: Created by Mariko Koseki, 22.01.2024 # Ver1.1.0: Updated by Mariko, 06.02.2024 # Ver2.0.0: Updated by Mariko, 15.08.2024 import numpy as np import pandas as pd import datetime import os import glob import sys import platform # Ver1.1.0 print('--- Python version ---') print(platform.python_version()) print('--- Package version ---') print('numpy: ', np.__version__) print('pandas: ', pd.__version__) ##--- Set year, month for climatology ------------------------------------## #ver2.0.0 ''' Set 'start_year_clm' and 'end_year_clm' Copernicus: 1993-2016 ''' start_year_clm = 1993 # 1993 end_year_clm = 2016 # 2016 start_year_1992 = 1992 #1992 start_year_1993 = 1993 #1993 end_year_2015 = 2015 #2015 end_year_2016 = 2016 #2016 ##--- Set path -------------------------------------------------## ## Set path to input files ## # Ver1.1.0 ''' Set 'out_hind' (path to input csv file) ''' seaice_dir = '/nird/projects/NS9873K/norcpm/validation/seaicepre/' out_hind = seaice_dir + 'hindcast/' ## Set path to output files ## # Ver1.1.0, Ver2.0.0 ''' Set 'out_clm_mdl' (path to csv file) ''' out_clm_mdl = seaice_dir + 'clm/mdl/clm_' + str(start_year_clm) + '_' + str(end_year_clm) + '/' if not os.path.exists(out_clm_mdl): os.makedirs(out_clm_mdl) ##--- Read CSV files ---------------------------------------## #ver2.0.0 ## search for csv files ## mdl_csvfiles = glob.glob(out_hind + '**/*.csv') mdl_csvfiles_sorted = sorted(mdl_csvfiles) ## Create list of year ## year1 = ["{}".format(y) for y in range(start_year_1992, end_year_2015+1)] year2 = ["{}".format(y) for y in range(start_year_1993, end_year_2016+1)] ymd_0106 = [s + '1215' for s in year1] ymd_0207 = [s + '0115' for s in year2] ymd_0308 = [s + '0215' for s in year2] ymd_0409 = [s + '0315' for s in year2] ymd_0510 = [s + '0415' for s in year2] ymd_0611 = [s + '0515' for s in year2] ymd_0712 = [s + '0615' for s in year2] ymd_0801 = [s + '0715' for s in year2] ymd_0902 = [s + '0815' for s in year2] ymd_1003 = [s + '0915' for s in year2] ymd_1104 = [s + '1015' for s in year2] ymd_1205 = [s + '1115' for s in year2] mdl_csvfiles_0106 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_0106)] mdl_csvfiles_0207 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_0207)] mdl_csvfiles_0308 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_0308)] mdl_csvfiles_0409 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_0409)] mdl_csvfiles_0510 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_0510)] mdl_csvfiles_0611 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_0611)] mdl_csvfiles_0712 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_0712)] mdl_csvfiles_0801 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_0801)] mdl_csvfiles_0902 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_0902)] mdl_csvfiles_1003 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_1003)] mdl_csvfiles_1104 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_1104)] mdl_csvfiles_1205 = [s for s in mdl_csvfiles_sorted if any((str in s) for str in ymd_1205)] ##--- Extract sea ice data for each period -----------------------## #ver2.0.0 df_list = [] ### Jan-Jun ### area_01_06 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_0106: mdl_df = pd.read_csv(filename) ## Change 'object' to 'datetime' ## mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1992': area_df_0106 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year)+1, 1, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 7, 1))] area_df_0106_l = area_df_0106.loc[:,['dtime', 'ensemble_mean']] area_01_06 = area_df_0106_l.rename({'ensemble_mean': str(int(mdl_year)+1)}, axis='columns') else: area_df_0106 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year)+1, 1, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 7, 1))] area_df_0106_l = area_df_0106.loc[:,['ensemble_mean']] area_01_06_re = area_df_0106_l.rename({'ensemble_mean': str(int(mdl_year)+1)}, axis='columns') area_01_06 = pd.concat([area_01_06, area_01_06_re], axis=1) ## Calculate average ## area_01_06['mean'] = area_01_06[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1) area_01_06['MMDD'] = area_01_06['dtime'].dt.strftime('%m-%d') target_col = 'MMDD' df_target1 = area_01_06[target_col] area_01_06_drp = area_01_06.drop(['dtime', 'MMDD'], axis=1) area_01_06_drp.insert(0, target_col, df_target1) area_01_06_r = area_01_06_drp.reset_index(drop=True) df_list.append(area_01_06_r) ### Feb-Jul ### area_02_07 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_0207: mdl_df = pd.read_csv(filename) ## Change 'object' to 'datetime' ## mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1993': area_df_0207 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 2, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year), 8, 1))] area_df_0207_l = area_df_0207.loc[:,['dtime', 'ensemble_mean']] area_02_07 = area_df_0207_l.rename({'ensemble_mean': mdl_year}, axis='columns') else: area_df_0207 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 2, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year), 8, 1))] area_df_0207_l = area_df_0207.loc[:,['ensemble_mean']] area_02_07_re = area_df_0207_l.rename({'ensemble_mean': mdl_year}, axis='columns') area_02_07 = pd.concat([area_02_07, area_02_07_re], axis=1) ## Calculate average ## area_02_07['mean'] = area_02_07[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1) area_02_07['MMDD'] = area_02_07['dtime'].dt.strftime('%m-%d') df_target2 = area_02_07[target_col] area_02_07_drp = area_02_07.drop(['dtime', 'MMDD'], axis=1) area_02_07_drp.insert(0, target_col, df_target2) area_02_07_r = area_02_07_drp.reset_index(drop=True) df_list.append(area_02_07_r) ### Mar-Aug ### area_03_08 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_0308: mdl_df = pd.read_csv(filename) ## Change 'object' to 'datetime' ## mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1993': area_df_0308 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 3, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year), 9, 1))] area_df_0308_l = area_df_0308.loc[:,['dtime', 'ensemble_mean']] area_03_08 = area_df_0308_l.rename({'ensemble_mean': mdl_year}, axis='columns') else: area_df_0308 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 3, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year), 9, 1))] area_df_0308_l = area_df_0308.loc[:,['ensemble_mean']] area_03_08_re = area_df_0308_l.rename({'ensemble_mean': mdl_year}, axis='columns') area_03_08 = pd.concat([area_03_08, area_03_08_re], axis=1) ## Calculate average ## area_03_08['mean'] = area_03_08[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1, skipna = True) area_03_08['MMDD'] = area_03_08['dtime'].dt.strftime('%m-%d') df_target3 = area_03_08[target_col] area_03_08_drp = area_03_08.drop(['dtime', 'MMDD'], axis=1) area_03_08_drp.insert(0, target_col, df_target3) area_03_08_r = area_03_08_drp.reset_index(drop=True) df_list.append(area_03_08_r) ### Apr-Sep ### area_04_09 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_0409: mdl_df = pd.read_csv(filename) ## Change 'object' to 'datetime' ## mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1993': area_df_0409 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 4, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year), 10, 1))] area_df_0409_l = area_df_0409.loc[:,['dtime', 'ensemble_mean']] area_04_09 = area_df_0409_l.rename({'ensemble_mean': mdl_year}, axis='columns') else: area_df_0409 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 4, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year), 10, 1))] area_df_0409_l = area_df_0409.loc[:,['ensemble_mean']] area_04_09_re = area_df_0409_l.rename({'ensemble_mean': mdl_year}, axis='columns') area_04_09 = pd.concat([area_04_09, area_04_09_re], axis=1) ## Calculate average ## area_04_09['mean'] = area_04_09[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1, skipna = True) area_04_09['MMDD'] = area_04_09['dtime'].dt.strftime('%m-%d') df_target4 = area_04_09[target_col] area_04_09_drp = area_04_09.drop(['dtime', 'MMDD'], axis=1) area_04_09_drp.insert(0, target_col, df_target4) area_04_09_r = area_04_09_drp.reset_index(drop=True) df_list.append(area_04_09_r) ### May-Oct ### area_05_10 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_0510: mdl_df = pd.read_csv(filename) ## Change 'object' to 'datetime' ## mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1993': area_df_0510 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 5, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year), 11, 1))] area_df_0510_l = area_df_0510.loc[:,['dtime', 'ensemble_mean']] area_05_10 = area_df_0510_l.rename({'ensemble_mean': mdl_year}, axis='columns') else: area_df_0510 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 5, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year), 11, 1))] area_df_0510_l = area_df_0510.loc[:,['ensemble_mean']] area_05_10_re = area_df_0510_l.rename({'ensemble_mean': mdl_year}, axis='columns') area_05_10 = pd.concat([area_05_10, area_05_10_re], axis=1) ## Calculate average ## area_05_10['mean'] = area_05_10[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1) area_05_10['MMDD'] = area_05_10['dtime'].dt.strftime('%m-%d') df_target5 = area_05_10[target_col] area_05_10_drp = area_05_10.drop(['dtime', 'MMDD'], axis=1) area_05_10_drp.insert(0, target_col, df_target5) area_05_10_r = area_05_10_drp.reset_index(drop=True) df_list.append(area_05_10_r) ### Jun-Nov ### area_06_11 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_0611: mdl_df = pd.read_csv(filename) ## Change 'object' to 'datetime' ## mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1993': area_df_0611 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 6, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year), 12, 1))] area_df_0611_l = area_df_0611.loc[:,['dtime', 'ensemble_mean']] area_06_11 = area_df_0611_l.rename({'ensemble_mean': mdl_year}, axis='columns') else: area_df_0611 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 6, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year), 12, 1))] area_df_0611_l = area_df_0611.loc[:,['ensemble_mean']] area_06_11_re = area_df_0611_l.rename({'ensemble_mean': mdl_year}, axis='columns') area_06_11 = pd.concat([area_06_11, area_06_11_re], axis=1) ## Calculate average ## area_06_11['mean'] = area_06_11[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1) area_06_11['MMDD'] = area_06_11['dtime'].dt.strftime('%m-%d') df_target6 = area_06_11[target_col] area_06_11_drp = area_06_11.drop(['dtime', 'MMDD'], axis=1) area_06_11_drp.insert(0, target_col, df_target6) area_06_11_r = area_06_11_drp.reset_index(drop=True) df_list.append(area_06_11_r) ### Jul-Dec ### area_07_12 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_0712: mdl_df = pd.read_csv(filename) ## Change 'object' to 'datetime' ## mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1993': area_df_0712 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 7, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 1, 1))] area_df_0712_l = area_df_0712.loc[:,['dtime', 'ensemble_mean']] area_07_12 = area_df_0712_l.rename({'ensemble_mean': mdl_year}, axis='columns') else: area_df_0712 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 7, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 1, 1))] area_df_0712_l = area_df_0712.loc[:,['ensemble_mean']] area_07_12_re = area_df_0712_l.rename({'ensemble_mean': mdl_year}, axis='columns') area_07_12 = pd.concat([area_07_12, area_07_12_re], axis=1) ## Calculate average ## area_07_12['mean'] = area_07_12[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1) area_07_12['MMDD'] = area_07_12['dtime'].dt.strftime('%m-%d') df_target7 = area_07_12[target_col] area_07_12_drp = area_07_12.drop(['dtime', 'MMDD'], axis=1) area_07_12_drp.insert(0, target_col, df_target7) area_07_12_r = area_07_12_drp.reset_index(drop=True) df_list.append(area_07_12_r) ### Aug-Dec + Jan ### area_08_01 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_0801: mdl_df = pd.read_csv(filename) ## Change 'object' to 'datetime' ## mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1993': area_df_0801 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 8, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 2, 1))] area_df_0801_l = area_df_0801.loc[:,['dtime', 'ensemble_mean']] area_08_01 = area_df_0801_l.rename({'ensemble_mean': mdl_year}, axis='columns') else: area_df_0801 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 8, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 2, 1))] area_df_0801_l = area_df_0801.loc[:,['ensemble_mean']] area_08_01_re = area_df_0801_l.rename({'ensemble_mean': mdl_year}, axis='columns') area_08_01 = pd.concat([area_08_01, area_08_01_re], axis=1) ## Calculate average ## area_08_01['mean'] = area_08_01[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1) area_08_01['MMDD'] = area_08_01['dtime'].dt.strftime('%m-%d') df_target8 = area_08_01[target_col] area_08_01_drp = area_08_01.drop(['dtime', 'MMDD'], axis=1) area_08_01_drp.insert(0, target_col, df_target8) area_08_01_r = area_08_01_drp.reset_index(drop=True) df_list.append(area_08_01_r) ### Sep-Dec + Jan-Feb ### area_09_02 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_0902: mdl_df = pd.read_csv(filename) ## Change 'object' to 'datetime' ## mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1993': area_df_0902 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 9, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 3, 1))] area_df_0902_l = area_df_0902.loc[:,['dtime', 'ensemble_mean']] area_09_02 = area_df_0902_l.rename({'ensemble_mean': mdl_year}, axis='columns') else: area_df_0902 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 9, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 3, 1))] area_df_0902_l = area_df_0902.loc[:,['ensemble_mean']] area_09_02_re = area_df_0902_l.rename({'ensemble_mean': mdl_year}, axis='columns') area_09_02 = pd.concat([area_09_02, area_09_02_re], axis=1) ## Calculate average ## area_09_02['mean'] = area_09_02[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1) area_09_02['MMDD'] = area_09_02['dtime'].dt.strftime('%m-%d') df_target9 = area_09_02[target_col] area_09_02_drp = area_09_02.drop(['dtime', 'MMDD'], axis=1) area_09_02_drp.insert(0, target_col, df_target9) area_09_02_r = area_09_02_drp.reset_index(drop=True) df_list.append(area_09_02_r) ### Oct-Dec + Jan-Mar ### area_10_03 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_1003: mdl_df = pd.read_csv(filename) ## Change 'object' to 'datetime' ## mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1993': area_df_1003 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 10, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 4, 1))] area_df_1003_l = area_df_1003.loc[:,['dtime', 'ensemble_mean']] area_10_03 = area_df_1003_l.rename({'ensemble_mean': mdl_year}, axis='columns') else: area_df_1003 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 10, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 4, 1))] area_df_1003_l = area_df_1003.loc[:,['ensemble_mean']] area_10_03_re = area_df_1003_l.rename({'ensemble_mean': mdl_year}, axis='columns') area_10_03 = pd.concat([area_10_03, area_10_03_re], axis=1) ## Calculate average ## area_10_03['mean'] = area_10_03[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1) area_10_03['MMDD'] = area_10_03['dtime'].dt.strftime('%m-%d') df_target10 = area_10_03[target_col] area_10_03_drp = area_10_03.drop(['dtime', 'MMDD'], axis=1) area_10_03_drp.insert(0, target_col, df_target10) area_10_03_r = area_10_03_drp.reset_index(drop=True) df_list.append(area_10_03_r) ### Nov-Dec + Jan-Apr ### area_11_04 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_1104: mdl_df = pd.read_csv(filename) ## Change 'object' to 'datetime' ## mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1993': area_df_1104 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 11, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 5, 1))] area_df_1104_l = area_df_1104.loc[:,['dtime', 'ensemble_mean']] area_11_04 = area_df_1104_l.rename({'ensemble_mean': mdl_year}, axis='columns') else: area_df_1104 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 11, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 5, 1))] area_df_1104_l = area_df_1104.loc[:,['ensemble_mean']] area_11_04_re = area_df_1104_l.rename({'ensemble_mean': mdl_year}, axis='columns') area_11_04 = pd.concat([area_11_04, area_11_04_re], axis=1) ## Calculate average ## area_11_04['mean'] = area_11_04[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1) area_11_04['MMDD'] = area_11_04['dtime'].dt.strftime('%m-%d') df_target11 = area_11_04[target_col] area_11_04_drp = area_11_04.drop(['dtime', 'MMDD'], axis=1) area_11_04_drp.insert(0, target_col, df_target11) area_11_04_r = area_11_04_drp.reset_index(drop=True) df_list.append(area_11_04_r) ### Dec + Jan-May ### area_12_05 = pd.DataFrame() # initialize an empty dataframe for filename in mdl_csvfiles_1205: mdl_df = pd.read_csv(filename) mdl_df['dtime'] = pd.to_datetime(mdl_df['dtime']) mdl_year = os.path.splitext(os.path.basename(filename))[0][12:16] if mdl_year == '1993': area_df_1205 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 12, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 6, 1))] area_df_1205_l = area_df_1205.loc[:,['dtime', 'ensemble_mean']] area_12_05 = area_df_1205_l.rename({'ensemble_mean': mdl_year}, axis='columns') else: area_df_1205 = mdl_df[(mdl_df['dtime'] >= datetime.datetime(int(mdl_year), 12, 1)) & (mdl_df['dtime'] < datetime.datetime(int(mdl_year)+1, 6, 1))] area_df_1205_l = area_df_1205.loc[:,['ensemble_mean']] area_12_05_re = area_df_1205_l.rename({'ensemble_mean': mdl_year}, axis='columns') area_12_05 = pd.concat([area_12_05, area_12_05_re], axis=1) ## Calculate average ## area_12_05['mean'] = area_12_05[['1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002',\ '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']].mean(axis = 1) area_12_05['MMDD'] = area_12_05['dtime'].dt.strftime('%m-%d') df_target12 = area_12_05[target_col] area_12_05_drp = area_12_05.drop(['dtime', 'MMDD'], axis=1) area_12_05_drp.insert(0, target_col, df_target12) area_12_05_r = area_12_05_drp.reset_index(drop=True) df_list.append(area_12_05_r) print(df_list) ##--- Save DataFrame as CSV --------------------------------------## #ver2.0.0 mm_name = ['01_06', '02_07', '03_08', '04_09', '05_10', '06_11', '07_12', '08_01', '09_02', '10_03', '11_04', '12_05'] for df_clm, mm in zip(df_list, mm_name): df_clm.to_csv(out_clm_mdl + 'mdl_area_' + mm + '_clm.csv', index=False) print('') print('Saved climatology') print('') print('Complated!!')