有没有一种方法可以使用Python在Excel中执行类似SQL的Select语句?

有没有一种方法可以使用Python在Excel中执行类似SQL的Select语句?,python,excel,pandas,xlrd,Python,Excel,Pandas,Xlrd,鉴于此excel表格: 假设SQL Select语句如下所示: Select Status from sheet where name = "John Doe" and age = 20 并返回与名称/年龄匹配的行的状态值 excel也可以有多行 我还添加了一个从excel复制粘贴的方法,但它粘贴了一张图片,我不确定如何共享实际的excel内容。下面的内容应该可以完成这项工作: >>> df Name Age Height

鉴于此excel表格:

假设SQL Select语句如下所示:

Select Status from sheet where name = "John Doe" and age = 20
并返回与名称/年龄匹配的行的状态值 excel也可以有多行

我还添加了一个从excel复制粘贴的方法,但它粘贴了一张图片,我不确定如何共享实际的excel内容。下面的内容应该可以完成这项工作:

>>> df

           Name  Age  Height       Status
0      John Doe   20     180  Not Married
1  Jhonny Dolly   20     170      Married

>>> df.query('Name == "John Doe" and Age == 20')

       Name  Age  Height       Status
0  John Doe   20     180  Not Married

>>> df.query('Name == "John Doe" and Age == 20')[['Status']]

        Status
0  Not Married
你可以使用这个方法。下面的内容应该可以完成这项工作:

>>> df

           Name  Age  Height       Status
0      John Doe   20     180  Not Married
1  Jhonny Dolly   20     170      Married

>>> df.query('Name == "John Doe" and Age == 20')

       Name  Age  Height       Status
0  John Doe   20     180  Not Married

>>> df.query('Name == "John Doe" and Age == 20')[['Status']]

        Status
0  Not Married

首先,加载excel文件:

df = pd.read_excel("myfile.xlsx")
现在您有了一个数据帧:

>>> df
           Name  Age  Height       Status
0      John Doe   20     180  Not Married
1  Jhonny Dolly   20     170      Married
您可以对其提出请求:

>>> df.loc[(df["Name"] == "John Doe") & (df["Age"] == 20), "Status"]
0    Not Married
Name: Status, dtype: object
以SQL方式:

name = "John Doe"
age = 20
print(df.query('Name == @name and Age == @age')["Status"])

首先,加载excel文件:

df = pd.read_excel("myfile.xlsx")
现在您有了一个数据帧:

>>> df
           Name  Age  Height       Status
0      John Doe   20     180  Not Married
1  Jhonny Dolly   20     170      Married
您可以对其提出请求:

>>> df.loc[(df["Name"] == "John Doe") & (df["Age"] == 20), "Status"]
0    Not Married
Name: Status, dtype: object
以SQL方式:

name = "John Doe"
age = 20
print(df.query('Name == @name and Age == @age')["Status"])

如果要使用纯SQL请求查询Excel文件,首先需要将其转换为数据库。最简单的解决方案是
sqlite
,因为它是Python标准库的一部分,不需要与
pandas
一起设置DBMS。你可以在中找到一个例子


如果要使用纯SQL请求查询Excel文件,首先需要将其转换为数据库。最简单的解决方案是
sqlite
,因为它是Python标准库的一部分,不需要与
pandas
一起设置DBMS。你可以在中找到一个例子


这似乎是neet,我已经尝试过了,但是我得到了一个奇怪的响应,或者我如何访问查询方法的返回?如果我打印
print(df.query('Name==“John doe”and Age==20'))
它会显示:
空数据框列:[名称、年龄、高度、状态]索引:[]
而且excel文件不是空的,我不得不使用
engine='openpyxl'
打开excel文件,给了我一个错误,因为xlsx扩展的bcs错误地将doe键入了小写。尝试按照上面的例子进行更改(区分大小写)确实有效,谢谢!还有一件事,查询的结果可以转换成字典吗?让我们说:{Name':'johndoe','Age':20,'Height':180,'Status':'Not已婚'}?是的。试试这个:
df.query('Name==“John Doe”and Age==20')。你太好了哈哈,谢谢!它确实奏效了!这似乎是neet,我已经尝试过了,但是我得到了一个奇怪的响应,或者我如何访问查询方法的返回?如果我打印
print(df.query('Name==“John doe”and Age==20'))
它会显示:
空数据框列:[名称、年龄、高度、状态]索引:[]
而且excel文件不是空的,我不得不使用
engine='openpyxl'
打开excel文件,给了我一个错误,因为xlsx扩展的bcs错误地将doe键入了小写。尝试按照上面的例子进行更改(区分大小写)确实有效,谢谢!还有一件事,查询的结果可以转换成字典吗?让我们说:{Name':'johndoe','Age':20,'Height':180,'Status':'Not已婚'}?是的。试试这个:
df.query('Name==“John Doe”and Age==20')。你太好了哈哈,谢谢!它确实奏效了!如果excel是1k+行左右,这不会消耗很多内存吗?仍然是啃老族的解决方案,谢谢,会探索的!如果excel是1k+行左右,这不会消耗很多内存吗?仍然是啃老族的解决方案,谢谢,会探索的!