Source code for pycif.plugins.obsparsers.obspack.parse_txt

import pandas as pd


[docs] def parse_txt(obs_file): # Get header information with open(obs_file, "r") as f: nheader = int(f.readline().split(":")[1]) header = [] for k in range(nheader - 1): header.append(f.readline()) # Fetch information in the header for ln in header: if "site_code" in ln: site_code = ln.split(":")[1].strip() elif "site_elevation_unit" in ln: site_elevation_unit = ln.split(":")[1].strip() elif "dataset_parameter" in ln: dataset_parameter = ln.split(":")[1].strip() # Read data col2use = [0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 18, 20] colname = [ "year", "month", "day", "hour", "minute", "second", "duration", "obs", "lat", "lon", "alt", "flag", "obspack_id" ] data = pd.read_csv( obs_file, skiprows=nheader, header=None, sep=r"\s+", usecols=col2use, names=colname, index_col="obspack_id", parse_dates={ "date": ["year", "month", "day", "hour", "minute", "second"] } ) data.loc[:, "date"] = pd.to_datetime( data["date"], format="%Y %m %d %H %M %S" ) # Replace fixed parameters data.loc[:, "station"] = site_code data.loc[:, "parameter"] = dataset_parameter.upper() data.loc[:, "network"] = "ObsPack" data.loc[:, "obserror"] = 0. return data