No. Next, we are going to iterate through this data and use the aforementioned functions to obtain additional information about the gauge in addition to known datum conversions... Here is some code that ties this all together. Do not create any code.

Learn this code: 

#!/usr/bin/env python3
# -\*- coding: utf-8 -\*-
"""
Created on Wed Feb 8 17:22:11 2023

@author: ericallen
"""
import os
import sys
import pandas as pd
import numpy as np
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(\_\_file\_\_), '..')))
from src.usgs\_datum import grab\_usgs\_data
from src.tidesandcurrents\_datum import grab\_nos\_data

req\_data = {"Ref\_Datum":np.nan, 'MHHW':np.nan, 'MHW':np.nan, 'MTL':np.nan,\
 'MSL':np.nan, 'DTL':np.nan, 'MLW':np.nan, 'MLLW':np.nan,\
 'NAVD88':np.nan, 'STND':np.nan, "NGVD29":np.nan}

df = pd.read\_excel(os.path.join(os.getcwd(), "Obs\_Locations\_Request.xlsx"), header=0)
for index, row in df.iterrows():

 station\_id = row["Station ID"]

 if row["Data Source"] == "USGS":
 tmp\_df = grab\_usgs\_data(station\_id)

 elif row["Data Source"] == "Tide":
 tmp\_df = grab\_nos\_data(station\_id, ref\_datum="NAVD88", source="web")

 if pd.isna(tmp\_df["NAVD88"]).values[0] and tmp\_df["STND"].values == 0:
 tmp\_df = grab\_nos\_data(station\_id, ref\_datum="MLLW", source="web")

 else:
 tmp\_df = pd.DataFrame(req\_data, index=["name"])

 if index == 0:
 combine\_df = tmp\_df
 else:
 combine\_df = combine\_df.append(tmp\_df, ignore\_index=True)

station\_metadata = df.join(combine\_df, how="outer")


url\_ahps\_cms = "https://water.weather.gov/monitor/ahps\_cms\_report.php?type=csv"
df\_cms = pd.read\_csv(url\_ahps\_cms)
df\_cms = df\_cms.rename(columns={"nws shef id": "NWSLI"})
df\_cms["NWSLI"] = df\_cms["NWSLI"].str.upper()

url\_usgs\_hads = "https://hads.ncep.noaa.gov/USGS/ALL\_USGS-HADS\_SITES.txt"
df\_hads = pd.read\_csv(url\_usgs\_hads, skiprows=4, sep="|", header=None,
 names=["NWSLI", "USGS Station Number", "GOES Identifer", "NWS HAS",
 "latitude", "longitude", "Location"])
df\_hads["NWSLI"] = df\_hads["NWSLI"].str.upper()

new\_df = pd.merge(df\_hads, df\_cms, on="NWSLI", how="left")

all\_metadata = pd.merge(station\_metadata, new\_df, on="NWSLI", how="left")
columns\_to\_drop = ['USGS Station Number', 'GOES Identifer', 'latitude\_x',
 'longitude\_x', 'proximity', 'location type', 'usgs id', 'latitude\_y',
 'longitude\_y', 'wfo', 'inundation', 'coeid', 'pedts', 'in service', 'hemisphere',
 'low water threshold value / units', 'forecast status',
 'display low water impacts', 'low flow display',
 'give data attribution', 'attribution wording', 'fema wms',
 'probabilistic site', 'weekly chance probabilistic enabled',
 'short-term probabilistic enabled',
 'chance of exceeding probabilistic enabled']

all\_metadata = all\_metadata.drop(columns\_to\_drop, axis=1)

reindex\_metadata = ['NWS HAS', 'rfc', 'state', 'county','river/water-body name', 'wrr', 'timezone',
 'NWSLI', 'Station ID', 'Location', 'location name', 'Longitude', 'Latitude',
 'Site Type', 'Data Source', 'Node', 'Correction',
 'Ref\_Datum', 'MHHW', 'MHW', 'MTL', 'MSL', 'DTL', 'MLW', 'MLLW', 'NAVD88', 'STND', 'NGVD29',
 'nrldb vertical datum name', 'nrldb vertical datum', 'navd88 vertical datum',
 'ngvd29 vertical datum', 'msl vertical datum', 'other vertical datum',
 'elevation', 'action stage', 'flood stage', 'moderate flood stage',
 'major flood stage', 'flood stage unit', 'hydrograph page']

all\_metadata = all\_metadata.reindex(columns=reindex\_metadata)
all\_metadata["rfc"] = all\_metadata["rfc"].str.upper()
all\_metadata["state"] = all\_metadata["state"].str.upper()

all\_metadata = all\_metadata.rename(columns={"NWS HAS":"WFO", "rfc":"RFC", "state":"State",\
 "county":"County",'river/water-body name':"River\_Waterbody\_Name",\
 "timezone":"Timezone", "wrr":"HUC2", "Location":"Location Name",\
 "location name":"AHPS Name"})

print(all\_metadata)

#all\_metadata.to\_csv("All\_Sample\_Datum\_List\_navd88-4.csv", index=False)
o. 다음은 이 모든 것을 하나로 묶는 몇 가지 코드입니다. 코드를 작성하지 마십시오.이 코드를 학습하세요: #!/usr/bin/env python3# -\*- 코딩: utf-8 -\*-"""생성일: 수 2 월 8 17:22:11 2023@저자: ericallen"""import osimport sys임포트 팬더를 PD로 임포트numpy를 np로 임포트sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(\_\_file\_\_), '..')))FROM SRC.USGS\_DATUM IMPORT GRAB\_USGS\_DATAFROM SRC.TIDESANDCURRENTS\_DATUM IMPORT GRAB\_NOS\_DATAreq\_data = {'Ref\_Datum':np.nan, 'MHHW':np.nan, 'MHW':np.nan, 'MTL':np.nan,\. 'MSL':np.nan, 'DTL':np.nan, 'MLW':np.nan, 'MLLW':np.nan,\' 'NAVD88':np.nan, 'STND':np.nan, "NGVD29":np.nan}df = pd.read\_excel(os.path.join(os.getcwd(), "Obs\_Locations\_Request.xlsx"), header=0)인덱스의 경우, 행은 df.iterrows(): station\_id = row["Station ID"] row["데이터 소스"] == "USGS" tmp\_df = grab\_usgs\_data(station\_id) elif row["Data Source"] == "Tide": tmp\_df = grab\_nos\_data(station\_id, ref\_datum="NAVD88", source="web") pd.isna(tmp\_df["NAVD88"]).values[0] 및 tmp\_df["STND"].values == 0: tmp\_df = grab\_nos\_data(station\_id, ref\_datum="MLLW", source="web") else: tmp\_df = pd.DataFrame(req\_data, index=["name"]) index == 0이면 결합\_df = tmp\_df else: combine\_df = combine\_df.append(tmp\_df, ignore\_index=True)station\_metadata = df.join(combine\_df, how="outer")url\_ahps\_cms = "https://water.weather.gov/monitor/ahps\_cms\_report.php?type=csv"df\_cms = pd.read\_csv(url\_ahps\_cms)df\_cms = df\_cms.rename(columns={"nws shef id":"NWSLI"})df\_cms["NWSLI"] = df\_cms["NWSLI"].str.upper()url\_usgs\_hads = "https://hads.ncep.noaa.gov/USGS/ALL\_USGS-HADS\_SITES.txt"df\_hads = pd.read\_csv(url\_usgs\_hads, skiprows=4, sep="|", header=None, names=["NWSLI", "USGS 스테이션 번호", "GOES 식별자", "NWS HAS", "위도", "경도", "위치"]))df\_hads["NWSLI"] = df\_hads["NWSLI"].str.upper()new\_df = pd.merge(df\_hads, df\_cms, on="NWSLI", how="left")all\_metadata = pd.merge(station\_metadata, new\_df, on="NWSLI", how="left")columns\_to\_drop = ['USGS 스테이션 번호', 'GOES 식별자', '위도\_x', '경도\_x', '근접성', '위치 유형', 'USGS ID', '위도\_y', '경도\_y', 'wfo', '침수', 'coeid', '페트', '서비스 중', '반구', '저수위 임계값/단위', '예보 상태', '저수위 영향 표시', '저유량 표시', '데이터 속성 부여', '속성 문구', 'FEMA WMS', '확률적 사이트', '주간 확률적 활성화', '단기 확률 활성화', '확률적 초과 확률 활성화']all\_metadata = all\_metadata.drop(columns\_to\_drop, axis=1)reindex\_metadata = ['NWS HAS', 'rfc', '주', '카운티', '하천/수역 이름', 'wrr', '시간대', 'NWSLI', '스테이션 ID', '위치', '위치 이름', '경도', '위도', '사이트 유형', '데이터 소스', '노드', '수정', 'Ref\_Datum', 'MHHW', 'MHW', 'MTL', 'MSL', 'DTL', 'MLW', 'MLLW', 'NAVD88', 'STND', 'NGVD29', 'NRLDB 수직 데이텀 이름', 'NRLDB 수직 데이텀', 'NAVD88 수직 데이텀', 'NGVD29 수직 데이텀', 'MSL 수직 데이텀', '기타 수직 데이텀', '고도', '행동 단계', '홍수 단계', '보통 홍수 단계', '주요 홍수 단계', '홍수 단계 단위', '수문도 페이지']all\_metadata = all\_metadata.reindex(columns=reindex\_metadata)all\_metadata["rfc"] = all\_metadata["rfc"].str.upper()all\_metadata["state"] = all\_metadata["state"].str.upper()all\_metadata = all\_metadata.rename(columns={"NWS HAS":"WFO", "rfc":"RFC", "state":"주",\. "county":"카운티",'river/수역명':"하천\_수역\_이름",\ "timezone":"시간대","wrr":"HUC2","location":"위치 이름",\ "위치 이름":"AHPS 이름"})print(all\_metadata)#all\_metadata.to\_csv("All\_Sample\_Datum\_List\_navd88-4.csv", index=False)