pandas Redshift python连接器列名是字节字符串

9fkzdhlc  于 2023-04-04  发布在  Python
关注(0)|答案(2)|浏览(125)

假设我有下表的红移:

a | b
-----
1 | 2
3 | 4

如果我想把它从Redshift提取到pd.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写了代码,它使用普通字符串,因此希望有一个解决方案,不改变太多的代码。
编辑:
版本
Python = 3.9.7
Redshift-connector = 2.0.889
Pandas= 1.2.5

jyztefdp

jyztefdp1#

你一句话就能搞定

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()
ejk8hzay

ejk8hzay2#

这在redshift-connector的v2.0.908中得到修复

相关问题