【发布时间】:2016-10-10 08:37:27
【问题描述】:
我正在将数据从 MySQL 数据库导入 Pandas 数据框。以下摘录是我正在使用的代码:
import mysql.connector as sql
import pandas as pd
db_connection = sql.connect(host='hostname', database='db_name', user='username', password='password')
db_cursor = db_connection.cursor()
db_cursor.execute('SELECT * FROM table_name')
table_rows = db_cursor.fetchall()
df = pd.DataFrame(table_rows)
当我打印数据框时,它确实正确地表示了数据,但我的问题是,是否也可以保留列名?这是一个示例输出:
0 1 2 3 4 5 6 7 8
0 :ID[giA0CqQcx+(9kbuSKV== NaN NaN None None None None None None
1 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None
2 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None
3 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None
4 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None
我想做的是保留列名,它将替换熊猫列索引。例如,列名不是 0,而是 MySQL 表中的“First_column”。有什么好的方法可以解决这个问题吗?或者有没有比我的更有效的方法将数据从 MySQL 导入 Pandas 数据帧?
【问题讨论】:
-
你为什么不用pd.read_sql()?
-
这里的问题与 MySQL db 相关 - 而不是 SQLalchemy - 如duplicate 中所问。
pd.read_sql()不支持 mysql 连接。此问题不应标记为重复。回答问题:df = pd.DataFrame(table_rows, columns=db_cursor.column_names)会按照要求做。 -
@kneewarp 您应该将此作为答案发布。接受的答案不适用于 OP 请求的 MySQL 连接。
标签: python mysql sql pandas numpy