有没有一种方法可以使用Python在Excel中执行类似SQL的Select语句?
鉴于此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
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+行左右,这不会消耗很多内存吗?仍然是啃老族的解决方案,谢谢,会探索的!