首页 > 解决方案 > PandaSQLException:(sqlite3.OperationalError)没有这样的列错误与pandasql

问题描述

我正在尝试从dataframe带有 pandasql 命令的列中获取:

import yfinance as yf
from pandasql import *
from pandas_datareader import data as pdr
yf.pdr_override()

list_of_companies = 'GOOG,TSLA'

class Analyzer():

    def __init__(self,companies):
        self.companies = companies
        self.yahoo_data = self.load_ystock_data(self.companies)
        self.data_sets = {"yahoo_data": self.yahoo_data}

    def load_ystock_data(self,companies_list):
        data = pdr.get_data_yahoo(companies_list, period='1d')
        return data

    def query(self, q):
        return sqldf(q,self.data_sets)

a = Analyzer(list_of_companies)

query_statement = """
                    SELECT
                    Close
                    FROM
                    yahoo_data;
                  """  
df1 = a.query(query_statement)

但检索错误:

PandaSQLException: (sqlite3.OperationalError) no such column: Close [SQL: SELECT Close FROM yahoo_data; ]

任何人都可以帮助我吗?

标签: pythonpandassqlitepandasql

解决方案


这可能是使用列名时区分大小写的问题。尝试将列名 Close 括在 "" 中,例如:

query_statement = """
                    SELECT
                    'Close'
                    FROM
                    yahoo_data;
                  """  

推荐阅读