我嘗試使用 python 從 mysql 獲取一些資料,但回傳 nan。有我的代碼:
import csv
import pandas as pd
from sqlalchemy import create_engine, types
from pandas.io import sql
import pymysql
import numpy as np
db = pymysql.connect(host='192.0.0.0',port=0000,user='123',passwd='123321',db='matomo',charset='utf8')
cursor = db.cursor()
try:
SQL_Query = pd.read_sql_query(
'''SELECT name FROM matomo_site''',db
)
df0=pd.DataFrame(SQL_Query, columns=['a'])
except:
print("Error")
db.rollback()
db.close()
print(df0)
結果:
a
0 NaN
1 NaN
2 NaN
matomo_site 上的 mysql 資料:
idsite name
1 Example
2 abc
3 def
我應該輸出如下資料:
a
0 Example
1 abc
2 def
這是因為我的資料在加密的資料空間中嗎?
uj5u.com熱心網友回復:
您設定的 columna存在問題,該列在 中不存在DataFrame,因此回傳的列a由缺失值填充。
你需要改變:
df0=pd.DataFrame(SQL_Query, columns=['a'])
到:
df0 = pd.read_sql_query(
'''SELECT name FROM matomo_site''',db
).rename(columns={'name':'a'}).reset_index(drop=True)
因為read_sql_queryreturn DataFrame,所以只加了renamewithSeries.reset_index和drop=Trueif 需要 default RangeIndex。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/326412.html
上一篇:轉移潘達斯資料框架Python
