Flag Daylight Saving Time (DST) Hours in Pandas Date-Time Column

前端 未结 4 538
执笔经年
执笔经年 2021-01-20 04:50

I created an hourly dates dataframe, and now I would like to create a column that flags whether each row (hour) is in Daylight Saving Time or not. For example, in summer hou

4条回答
  •  囚心锁ツ
    2021-01-20 05:07

    Here is what I ended up doing, and it works for my purposes:

    import pandas as pd
    import pytz
    
    # Create dates table and flag Daylight Saving Time dates
    dates = pd.DataFrame(data=pd.date_range('2018-1-1', '2018-12-31-23', freq='h'), columns=['date_time'])
    
    # Create a list of start and end dates for DST in each year, in UTC time
    dst_changes_utc = pytz.timezone('America/Denver')._utc_transition_times[1:]
    
    # Convert to local times from UTC times and then remove timezone information
    dst_changes = [pd.Timestamp(i).tz_localize('UTC').tz_convert('America/Denver').tz_localize(None) for i in dst_changes_utc]
    
    flag_list = []
    for index, row in dates['date_time'].iteritems():
        # Isolate the start and end dates for DST in each year
        dst_dates_in_year = [date for date in dst_changes if date.year == row.year]
        spring = dst_dates_in_year[0]
        fall = dst_dates_in_year[1]
        if (row >= spring) & (row < fall):
            flag = 1
        else:
            flag = 0
        flag_list.append(flag)
    print(flag_list)
    dates['dst_flag'] = flag_list
    del(flag_list)
    

提交回复
热议问题