2016-02-29 285 views
1

相關:pandas read_sql drops dot in column namespandas read_sql將列名轉換爲小寫 - 是否有workaroud?

我用pandas.read_sql從從Postgres數據庫的SQL查詢創建一個數據幀。 某些列別名\名稱使用混合大小寫,我希望它傳播到數據框。然而,大熊貓(或底層引擎 - SQLAlchemy盡我所知)只返回小寫字段名稱。

是否有解決方法? (除了使用查找表並修改之後的值)

+0

你可以調用'df.rename(columns = some_dict,inplace = True)'來重新命名cols,但我懷疑這種情況不是熊貓做的 – EdChum

+0

這是我的後備計劃,但我寧願不要放棄這種情況信息在第一位。 –

+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將返回正確的列名秒。如果問題是SQLAlchemy或熊貓,那麼這是不夠的。