将数据从MySQL数据库导入Pandas数据框,包括列名

时间:2016-06-09 15:28:41

标签: python mysql sql pandas numpy

我将数据从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   

我想要做的是保留列名,这将替换pandas列索引。例如,列名不是0,而是列名:" First_column"就像在MySQL表中一样。有没有好办法解决这个问题?或者是否有更有效的方法将数据从MySQL导入Pandas数据框而不是我的?

1 个答案:

答案 0 :(得分:96)

IMO使用pandas从MySQL服务器读取数据会更有效率:

df = pd.read_sql('SELECT * FROM table_name', con=db_connection)

这也应该照顾列名......