code: def _setup_postprocess_hds_timeseries(hds_file, df, config_file, prefix=None, model=None):
      
      warnings.warn(
          "Setting up post processing of hds or ucn timeseries obs. "
          "Prepending 'pp' to obs name may cause length to exceed 20 chars", PyemuWarning)
      if model is not None:
          t_str = df.index.map(lambda x: x.strftime("%Y%m%d"))
      else:
          t_str = df.index.map(lambda x: "{0:08.2f}".format(x))
      if prefix is not None:
          prefix = "pp{0}".format(prefix)
      else:
          prefix = "pp"
      ins_file = hds_file+"_timeseries.post_processed.ins"
      print("writing instruction file to {0}".format(ins_file))
      with open(ins_file,'w') as f:
          f.write('pif ~\n')
          f.write("l1 \n")
          for t in t_str:
              f.write("l1 w ")
              for site in df.columns:
                  obsnme = "{0}{1}_{2}".format(prefix, site, t)
                  f.write(" !{0}!".format(obsnme))
              f.write('\n')
      frun_line = "pyemu.gw_utils._apply_postprocess_hds_timeseries('{0}')\n".format(config_file)
      return frun_line
docs: Dirty function to post process concentrations in inactive/dry cells