【问题标题】:showing NAN values for strings in dataframe when i tried to load sql tabel in to dataframe当我尝试将 sql 表加载到数据框中时,显示数据框中字符串的 NAN 值
【发布时间】:2019-07-09 15:47:59
【问题描述】:

我在 SQL 中有一个表,我尝试将该表数据提取到一个 数据框,当我尝试打印数据框时,它显示数字 完美的字符串值显示为“NAN”

import pymysql``
import pandas as pd
from pandas import DataFrame

storage = input("Enter your database name :")
table = input("Enter your table name")
db = pymysql.connect(host='localhost', database=storage, user='', 
passwd='')
cursor = db.cursor()
print("Connected to " + storage)

query = pd.read_sql_query('SELECT * FROM ' +table , db)

df = DataFrame(query, columns=['First_name', 'Last_name ', 'Age', 'SEX', 
'Income', 'Cellno', 'Id', 'Aadhar'])

print(df)

它不是打印值,而是打印列的 NAN (first_name, 姓氏、年龄、收入)

我已经尽力解决这个问题,但没有得到任何结果

storage = input("Enter your database name :")
table = input("Enter your table name")
db = pymysql.connect(host='localhost', database=storage, user='', 
passwd='')
cursor = db.cursor()
print("Connected to " + storage)

query = pd.read_sql_query('SELECT * FROM ' +table , db)

df = DataFrame(query, columns=['First_name', 'Last_name ', 'Age', 'SEX', 
'Income', 'Cellno', 'Id', 'Aadhar'])
print(df)

它仍然打印列的 NAN,而不是打印值(first_name, 姓氏、年龄、收入)

【问题讨论】:

  • 你试过 pd.read_sql 吗?此方法将直接从 sql 查询生成数据帧。您可以在之后重命名列。这应该将所有内容(包括列名)直接拉入数据框中。如果你仍然得到空值,我会检查数据库数据。 df = pd.read_sql('SELECT * FROM ' +table , db)
  • 嘿,它通过使用 pd.read_sql 工作,感谢您的帮助。

标签: python sql pandas dataframe


【解决方案1】:

如果您可以使用其他包,请尝试psycopg2 和此模式

import pandas as pd
import psycopg2

host = 'host_name'
database = 'database_name'
username = 'username'
password = 'password'

storage = input("Enter your database name :")
table = input("Enter your table name")

    with psycopg2.connect(f"host='{host}' 
                            dbname='{database}' 
                            user='{username}' 
                            password='{password}'") as connection:
        sqlQuery = """
SELECT * FROM %s' %(table)
"""
        data = pd.read_sql(sqlQuery, connection)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2015-06-06
    • 2012-09-22
    相关资源
    最近更新 更多