问题:pandas read_sql 将列名转换为小写 - 有解决方法吗?

相关:pandas read_sql 在列名中删除点

我使用 pandas.read_sql 从 postgres 数据库的 sql 查询创建数据框。一些列别名\名称使用混合大小写,我希望它传播到数据框。但是,pandas(或下划线引擎——据我所知,SQLAlchemy)只返回小写的字段名称。

有解决方法吗? (除了使用查找表并在之后修复值)

解答

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 或 pandas,那么这还不够。

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐