使用pandas和sqldf获取此类表错误

Dav*_*ung 6 python sql dataframe pandas sqldf

我得到一个sqlite3.OperationalError:没有这样的表:Bills

我首先使用pandas调用我的数据帧,然后在我的查询中调用这些数据帧,这很好

import pandas as pd
from pandasql import sqldf

Bills = pd.read_csv("Bills.csv")
Accessorials = pd.read_csv("Accessorials.csv")

q = """
Select          
            CityStateLane, 
            Count(BillID) as BillsCount, 
            Sum(BilledAmount) as BillsSum, 
            Count(Distinct CarrierName) as NumberOfCarriers, 
            Avg(BilledAmount) as BillsAverage, 
            Avg(BilledWeight) as WeightAverage
From 
            Bills
Where 
            Direction = 'THIRD PARTY' 
Group by 
            CityStateLane
Order by 
            BillsCount DESC
"""

topCityStateLane = sqldf(q)
Run Code Online (Sandbox Code Playgroud)

然后,我使用另一个查询创建另一个数据框,但这会调用错误,说Bills不存在,即使我在上一个查询中成功使用它.

q = """
SELECT
         Bills.BillID as BillID,
         A2.TotalAcc as TotalAcc
FROM
            (SELECT
                    BillID_Value,
                    SUM(PaidAmount_Value) as "TotalAcc"
            FROM  
                    Accessorials 
            GROUP BY
                    BillID_Value 
            ) AS  A2,
            Bills 
WHERE    
            A2.BillID_Value  = Bills.BillID
 """
temp = sqldf(q)
Run Code Online (Sandbox Code Playgroud)

感谢您抽出时间来阅读.

小智 1

您是否正在尝试将 Bills 与 A2 表连接?您无法在一个 select from 语句中从两个表中选择列。

q = """
SELECT
         Bills.BillID as BillID,
         A2.TotalAcc as TotalAcc
FROM
            (SELECT
                    BillID_Value,
                    SUM(PaidAmount_Value) as "TotalAcc"
            FROM  
                    Accessorials 
            GROUP BY
                    BillID_Value 
            ) AS  A2 
            join Bills 
            on A2.BillID_Value  = Bills.BillID
 """
temp = sqldf(q)
Run Code Online (Sandbox Code Playgroud)