python - Redshift python连接器列名称是字节字符串
问题描述
假设我在红移中有下表:
a | b
-----
1 | 2
3 | 4
如果我想将它从 Redshift 提取到 apd.DataFrame
我可以执行以下操作:
import redshift_connector
import pandas as pd
query = 'SELECT * FROM table'
conn = redshift_connector(user=user, host=host, password=password, port=port, database=database)
df = pd.read_sql_query(query, conn)
我正在使用以下包redshift_connector。但问题是列的名称df
是字节字符串:
df['a']
这将返回错误,因为列的名称是b'a'
. 有谁知道任何解决方法?我已经编写psycopg2
了使用普通字符串的代码,因此希望有一个不会改变太多代码的解决方案。
编辑:
版本
蟒蛇 = 3.9.7
红移连接器 = 2.0.889
熊猫 = 1.2.5
解决方案
你可以用一行来解决这个问题
df.columns = [col.decode("utf-8") for col in df.columns]
或者不使用pd.read_sql_query
文档中建议的连接方法
cursor: redshift_connector.Cursor = conn.cursor()
cursor.execute("SELECT * FROM table")
result: pd.DataFrame = cursor.fetch_dataframe()
推荐阅读
- c# - MS Bot Framework 错误:“QnAMaker”不包含“CallTrainAsync”的定义,并且没有可访问的扩展方法“CallTrainAsync”
- python - xmltodict 抛出 ExpatError: no element found
- webforms - SecurityTokenValidated 上的 OpenId Connect OWIN 中间件中的 HttpContext.Current 为空
- vue.js - 如何从 Vue JS 中的 v-for 循环中获取价值
- java - 将 Web 控制器添加到 Akka Actor 系统
- discord.js - 如何在 discord.js 中解析引号中的命令参数?
- python - PyCharm 中带有 nptyping 和数组的 Numpy Typehint
- c++ - C++ 对象名到 str
- c# - IronPdf 打印到边距
- php - 如何在 Laravel 5.8 中为西弗吉尼亚州设置时区