![]() |
Convert SAS Dates Format in a loop - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Convert SAS Dates Format in a loop (/thread-17170.html) |
Convert SAS Dates Format in a loop - MohanReddy - Apr-01-2019 import pandas as pd Dates_Min_Max_Df = pd.read_sas("path/file.sas7bdat") print(Dates_Min_Max_Df) Minimum_Date Maximum_Date Close_dt 1.556669e+09 1.856563e+09 Open_dt 1.836669e+09 1.996669e+09 Current_Mth 1.986669e+09 1.556459e+09 def convert_sas_dates(df,field): df[field] = pd.to_timedelta(df[field], unit= 's') + pd.datetime(1960,1,1) return df dt_list = ['Minimum_Date','Maximum_Date'] for field in dt_list: Dates_Min_Max_Df = convert_sas_dates(Dates_Min_Max_Df, field)
Quote:Required output
can someone help RE: Convert SAS Dates Format in a loop - MohanReddy - Apr-02-2019 Can someone help or is there anything I am missing while raising a query? RE: Convert SAS Dates Format in a loop - scidam - Apr-02-2019 Try something like this instead: def convert_sas_dates(df, field, inplace=False, unit='s'): """Converts sas-formated column to standard. """ if inplace: df.loc[:, field] = pd.to_timedelta(df.loc[:, field]) + pd.datetime(1960, 1, 1) else: df_ = df.copy() df_.loc[:, field] = pd.to_timedelta(df_.loc[:, field], unit=unit) + pd.datetime(1960,1,1) return df_ |