2016-06-09 3 views
20

Ich importiere Daten aus einer MySQL-Datenbank in einen Pandas-Datenrahmen. Der folgende Auszug ist der Code, den ich verwende:Importieren von Daten aus einer MySQL-Datenbank in einen Pandas-Datenrahmen mit Spaltennamen

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) 

Wenn ich den Datenrahmen drucken Sie es richtig, die Daten darstellt, sondern meine Frage ist, ist es möglich, die Spaltennamen auch zu halten? Hier ist ein Beispiel für die Ausgabe:

      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 

Was würde ich tun möchte, ist auf den Spaltennamen zu halten, die die Pandas Spaltenindizes ersetzen würde. Zum Beispiel würde der Spaltenname anstelle von 0 lauten: "First_column" wie in der MySQL-Tabelle. Gibt es einen guten Weg, dies zu tun? Oder gibt es einen effizienteren Ansatz zum Importieren von Daten aus MySQL in einen Pandas-Datenrahmen als meiner?

+0

warum Sie nicht verwenden [ pd.read_sql()] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html)? – MaxU

Antwort

28

IMO wäre es viel effizienter sein, Pandas zu verwenden, zum Lesen von Daten aus Ihrem MySQL-Server:

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

dies auch Pflege der Spaltennamen nehmen soll ...

Verwandte Themen