У меня есть скрипт, который проверяет функции в базе данных ГИС на предмет отсутствия значений в полях.Если значение отсутствует, оно добавляется к кадру данных, где верхний столбец является именем функции.В идеале я хотел бы разделить это так, чтобы имя объекта стало именем листа, но я не уверен, как это сделать итеративно.Следует отметить, что не каждая функция будет иметь пропущенное значение, разные функции в разное время могут иметь или не иметь пропущенное значение, вот в чем смысл этой проверки.
df = pd.DataFrame()
for dst, dstkey in zip(Dst, DstKey):
with arcpy.da.SearchCursor(dst, ("OBJECTID", dstkey)) as cursor:
#returns an iterator of tuples
for row in cursor:
if (row[1] is None or not str(row[1]).strip()):
df = df.append(pd.DataFrame({dst.split("\\").pop(): str(row[0])}, index=[0]), ignore_index=True)
Это возвращает мне один фрейм данных.В идеале я хотел бы экспортировать несколько кадров данных в Excel с dst
в качестве sheet_name
.Проблема здесь в том, что я не буду знать, сколько (если таковые имеются) функции будут иметь пустое значение.
Я попытался создать пустой фрейм данных для каждой функции, но я не могу понять, как это будет работать в приведенном выше блоке кода.
d = {dst.split("\\").pop().split(".")[2]: pd.DataFrame() for dst in Dst}
Стоит отметить, что Dst
- это список путей к базе данных SQL, а DstKey
- это поле в каждой базе данных, для которой я проверяю.