2016-02-29 2 views
1

связанные: pandas read_sql drops dot in column namespandas read_sql имена имен столбцов в нижнем регистре - есть ли рабочий стол?

Я использую pandas.read_sql создать фрейм данных из SQL-запроса из базы данных Postgres. некоторые псевдонимы столбцов \ имена используют смешанный случай, и я хочу, чтобы он распространялся на фрейм данных. однако, pandas (или двигатель подчеркивания - SQLAlchemy, насколько я знаю) возвращает только имена полей в нижнем регистре.

есть ли обходной путь? (помимо использования таблицы поиска и фиксации значений впоследствии)

+0

Вы можете вызвать 'df.rename (columns = some_dict, inplace = True)', чтобы переименовать cols, но я подозреваю, что потеря случая не является pandas, делая – EdChum

+0

, это мой резервный план, но я предпочитаю не потерять случай информация на 1-м месте. –

+0

Вы используете pypyodbc? Это устранило проблему для меня (переход Python 2 в Python 3) https://stackoverflow.com/questions/36314255/how-to-make-pandas-read-sql-not-convert-all-headers-to-lower -дело –

ответ

2

Postgres нормализует имена некотируемых столбцов в нижнем регистре. Если у вас есть такая таблица:

create table foo ("Id" integer, "PointInTime" timestamp); 

PostgreSQL будет слушаться дело, но вы должны указать имена таблиц в кавычках, как, например:

select "Id", "PointInTime" from foo; 

Лучшее решение для добавления столбцы, например:

select name as "Name", value as "Value" from parameters; 

И Postgres вернет правильно имя столбца с обсадной колонной s. Если проблема SQLAlchemy или pandas, то этого будет недостаточно.

Смежные вопросы