In [1]:
import pandas as pd

In [2]:
Table = pd.read_csv('C:\Users\Ty Dickinson\Downloads\96-2010WinterWeather.csv')
Table['Total_Damages'] = Table['DAMAGE_PROPERTY_NUM'] + Table['DAMAGE_CROPS_NUM']
Table['BEGIN_DATE'] = pd.to_datetime(Table.BEGIN_DATE)
Table.drop([
    'EVENT_ID', 'CZ_TIMEZONE', 'SOURCE'
], axis=1, inplace=True)

pd.options.mode.chained_assignment = None
Table.BEGIN_TIME = Table.BEGIN_TIME.astype(int)
Table['Z_Time'] = Table['BEGIN_TIME']
Table['Z_Day'] = Table['BEGIN_DATE']

for i in range(0, len(Table.BEGIN_TIME)):
    if Table.BEGIN_TIME[i] <= 1759:
        Table.Z_Time[i] = Table.BEGIN_TIME[i] + 600
        Table.Z_Day[i] = Table.BEGIN_DATE[i]
    else:
        Table.Z_Time[i] = (Table.BEGIN_TIME[i] + 600) - 2400
        Table.Z_Day[i] = Table.BEGIN_DATE[i] + pd.DateOffset(days=1)


#Dates for season boundaries for WFO EWX
Date1 = '11-01-1995'
Date2 = '02-28-1996'
#Will be used for early winter (OND), late winter (JFM)
#Date1 = '10-01-1996'
#Date2 = '12-31-1996
#Date3 = '01-01-1997'
#Date4 = '03-31-1997'


Date1 = pd.to_datetime(Date1)
Date2 = pd.to_datetime(Date2)
#Date3 = pd.to_datetime(Date3)
#Date4 = pd.to_datetime(Date4)
#Date5 = pd.to_datetime(Date5)
#Date6 = pd.to_datetime(Date6)

#Lists to output seasons' values to 
DirectDeaths = []
#EarlyWinterDirectDeaths = []
#LateWinterDirectDeaths = []

IndirectDeaths = []
#EarlyWinterIndirectDeaths = []
#LateWinterIndirectDeaths = []

DirectInjuries = []
#EarlyWinterDirectInjuries = []
#LateWinterDirectInjuries = []

IndirectInjuries = []
#EarlyWinterIndirectInjuries = []
#LateWinterIndirectInjuries = []

Damages = []
#EarlyWinterDamages = []
#LateWinterDamages = []

Reports = []
#EarlyWinterReports = []
#LateWinterReports = []

ReportDaysList = []
#EarlyWinterReportDaysList = []
#LateWinterReportDaysList = []


Count = 0
#EarlyWinterCount = 0
#LateWinterCount = 0



df = Table.set_index(['BEGIN_DATE'])
#while statements for each season 
while Count <= 14:
    x = df.loc[Date1:Date2]
    Reports.insert(Count, len(x.index))
    y = x.DEATHS_DIRECT.sum()
    z = x.DEATHS_INDIRECT.sum()
    a = x.INJURIES_DIRECT.sum()
    b = x.INJURIES_INDIRECT.sum()
    c = x.Total_Damages.sum()
    DirectDeaths.insert(Count, y)
    IndirectDeaths.insert(Count, z)
    DirectInjuries.insert(Count, a)
    IndirectInjuries.insert(Count, b)
    Damages.insert(Count, c)
    ReportDays = 1
    if len(x.index) == 0:
        ReportDaysList.insert(Count, 0)
    else: 
        for i in range(1, len(x.index)):
            if ((x.Z_Day[i] == x.Z_Day[i-1]) and ((x.Z_Time[i] < 1200) and (x.Z_Time[i-1] < 1200))):
                continue
            elif ((x.Z_Day[i] == x.Z_Day[i-1]) and ((x.Z_Time[i] >= 1200) and (x.Z_Time[i-1] >= 1200))):
                continue
            elif (x.Z_Day[i] == (x.Z_Day[i-1] + pd.DateOffset(days=1))) and ((x.Z_Time[i] < 1200) and (x.Z_Time[i-1] >= 1200)):
                continue
            else:
                ReportDays = ReportDays + 1
        ReportDaysList.insert(Count, ReportDays)
    if Date2.is_leap_year:
        Date2 = Date2 - pd.DateOffset(days=1)
    Date1 = Date1 + pd.DateOffset(years=1)
    Date2 = Date2 + pd.DateOffset(years=1)
    if Date2.is_leap_year:
        Date2 = Date2 + pd.DateOffset(days=1)
    Count = Count + 1
    
#while LateWinterCount <= 14:
    #x = df.loc[Date5:Date6]
    #FallReports.insert(LateWinterCount, len(x.index))
    #y = x.DEATHS_DIRECT.sum()
    #z = x.DEATHS_INDIRECT.sum()
    #a = x.INJURIES_DIRECT.sum()
    #b = x.INJURIES_INDIRECT.sum()
    #c = x.Total_Damages.sum()
    #LateWinterDirectDeaths.insert(LateWinterCount, y)
    #LateWinterIndirectDeaths.insert(LateWinterCount, z)
    #LateWinterDirectInjuries.insert(LateWinterCount, a)
    #LateWinterIndirectInjuries.insert(LateWinterCount, b)
    #LateWinterDamages.insert(LateWinterCount, c)
    #LateWinterReportDays = 1
    #if len(x.index) == 0:
        #LateWinterReportDaysList.insert(LateWinterCount, 0)
    #else: 
        #for i in range(1, len(x.index)):
            #if ((x.Z_Day[i] == x.Z_Day[i-1]) and ((x.Z_Time[i] < 1200) and (x.Z_Time[i-1] < 1200))):
                #continue
            #elif ((x.Z_Day[i] == x.Z_Day[i-1]) and ((x.Z_Time[i] >= 1200) and (x.Z_Time[i-1] >= 1200))):
                #continue
            #elif (x.Z_Day[i] == (x.Z_Day[i-1] + pd.DateOffset(days=1))) and ((x.Z_Time[i] < 1200) and (x.Z_Time[i-1] >= 1200)):
                #continue
            #else:
                #LateWinterReportDays = LateWinterReportDays + 1
        #LateWinterReportDaysList.insert(LateWinterCount, LateWinterReportDays)
    #Date3 = Date3 + pd.DateOffset(years=1)
    #Date4 = Date4 + pd.DateOffset(years=1)
    #LateWinterCount = LateWinterCount + 1
    

    
#Check to see if the lists correctly match the csv totals
#print(sum(Reports))
#print(len(Table.index))
#print(sum(DirectDeaths))
#print(Table.DEATHS_DIRECT.sum())
#print(sum(IndirectDeaths))
#print(Table.DEATHS_INDIRECT.sum())
#print(sum(DirectInjuries))
#print(Table.INJURIES_DIRECT.sum())
#print(sum(IndirectInjuries))
#print(Table.INJURIES_INDIRECT.sum())
#print(sum(Damages))
#print(Table.Total_Damages.sum())


df1 = pd.DataFrame({'Reports': Reports})
df2 = pd.DataFrame({'Direct Deaths': DirectDeaths})
df3 = pd.DataFrame({'Indirect Deaths': IndirectDeaths})
df4 = pd.DataFrame({'Direct Injuries': DirectInjuries})
df5 = pd.DataFrame({'Indirect Injuries': IndirectInjuries})
df6 = pd.DataFrame({'Damages': Damages})
df7 = pd.DataFrame({'Report Days': ReportDaysList})

dftot = pd.concat([
    df1, df2, df3, df4, df5, df6, df7
], axis=1)

years = []
for i in range(1996,2011):
    years.insert(i,i)
dftot = dftot.set_index([years])

dftot.to_csv('Winter Weather Impacts.csv')

In [ ]: