Source code for olm.loggers.HoboToolkit

from pandas import read_csv,DataFrame



[docs] def read_hobo_csv(csv_file, all_columns=False): """ Reads data from a csv file exported from HOBOware. Parameters ---------- csv_file : string A string containing the file name of the csv file to be read. all_columns : boolean (optional) Determines whether to read in all columns or just ones that we search for and relabel (RH, DewPt, Abs Pres, Temp, Attached, Stopped, Connected, EOF, Cond High Range, Cond Low Range, DO). Default = False Returns ------- df : pandas.DataFrame DataFrame containing data from HOBO csv file. """ skiprows=1 index_col=1 parse_dates=True df = read_csv(csv_file, skiprows=skiprows, index_col=index_col, parse_dates=parse_dates) #Convert column names into something nicer columns = df.columns rename_dict = {} cond_count =0 for label in columns: #By default, use old name new_name=label if all_columns==False: wantcol=False else: wantcol=True if label=='#': if all_columns: new_name = 'Num' if 'RH' in label: new_name = 'RH' wantcol=True if 'DewPt' in label: new_name = 'DewPt' wantcol = True if 'Abs Pres' in label: new_name = 'Pressure' wantcol=True if 'Temp' in label: new_name = 'Temp' wantcol=True if 'Detached' in label: if all_columns: new_name = 'Detached' if 'Attached' in label: if all_columns: new_name = 'Attached' if 'Stopped' in label: if all_columns: new_name = 'Stopped' if 'Connected' in label: if all_columns: new_name = 'Connected' if 'End Of File' in label: if all_columns: new_name = 'EOF' if 'Low Range' in label: new_name = 'CondLow' cond_count+=1 wantcol=True if 'High Range' in label: new_name = 'CondHigh' cond_count+=1 wantcol=True if 'Full Range' in label: new_name = 'CondFull' cond_count+=1 wantcol=True if 'DO conc' in label: new_name = 'DO' wantcol=True if wantcol==True: rename_dict[label]=new_name #If there is only one conductivity column, we'll label it as 'Cond' if cond_count==1: old_names = list(rename_dict.keys()) for old_name,new_name in rename_dict.items(): if 'Cond' in new_name: cond_key = old_name rename_dict[cond_key] = 'Cond' df = df.rename(columns=rename_dict) if not(all_columns): #Trim out unwanted columns s_dict = {} for col in rename_dict.values(): s = df[col] s_dict[col] = s df = DataFrame(s_dict) return df