#python #sql #pandas
Вопрос:
Я извлекаю результаты из Snowflake, используя приведенный ниже код. Инструкция SQL отлично возвращается в веб-интерфейсе Snowflake, но при извлечении в Python я получаю ошибку ValueError: Найден не уникальный индекс столбца
Если бы это произошло в моем рабочем процессе Pandas, я бы сбросил функцию _index (), но, поскольку это происходит в момент создания фрейма данных, я не уверен, как это исправить.
В качестве промежуточного я экспортирую csv из Snowflake и импортирую в Python, что я ненавижу делать, так как я обновляюсь несколько раз в неделю.
cur.execute(sql)
df = cur.fetch_pandas_all()
Ответ №1:
Я обнаружил, что, хотя snowflake позволяет возвращать одинаковые именованные столбцы в webui, это несовместимо с pandas.
Простое переименование в инструкции SQL, как показано ниже, решило проблему.
Выберите XXX как XXX_2
Ответ №2:
Только что попробовал сформировать df подобным образом, и это сработало.
cur.execute(sql)
df = pd.DataFrame.from_records(iter(cur), columns=[x[0] for x in cur.description])
Комментарии:
1. Если я правильно понимаю, это работает, потому что он не смотрит на имена столбцов, поэтому повторяющиеся имена не вызывают исключения (см. Ответ Марка Гептонстолла). Это альтернативное решение, если вы не знаете, какие имена столбцов дублируются, и вам не нужны имена столбцов.