首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandasql IIf函数不工作错误

Pandasql IIf函数不工作错误
EN

Stack Overflow用户
提问于 2019-07-18 09:48:57
回答 1查看 1.3K关注 0票数 0

试图执行以下代码:

代码语言:javascript
复制
import pandas as pd
import pandasql as ps

df = pd.DataFrame({'A':[5,6,7], 'B':[7,8,9]})
print(df)

       A  B
    0  5  7
    1  6  8
    2  7  9

qry = """SELECT df.*, IIf(A Is Null,[B],[A]) AS NEW_A FROM df;"""
df1 = ps.sqldf(qry, globals())
print(df1)

产生此错误:

代码语言:javascript
复制
PandaSQLException: (sqlite3.OperationalError) no such function: IIf 
[SQL: 'SELECT df.*, IIf(A Is Null,[B],[A]) AS NEW_A FROM df;']

我尝试过关于方括号、全局/局部变量等不同语法的各种组合,但都找不到问题。这个功能根本不存在吗?

我只是从MS Access查询中复制了SQL查询,但对于其他情况,这很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-18 10:03:56

iif()函数在SQLite中不存在。

在这种情况下,您可以使用coalesce()

代码语言:javascript
复制
SELECT df.*, coalesce(A, B) AS NEW_A FROM df

iif()的功能可以通过CASE语句来实现:

代码语言:javascript
复制
SELECT df.*, CASE WHEN A is null THEN B ELSE A END AS NEW_A FROM df

但在这种情况下,coalesce()更简单。

更新

从(2020-05-22)的3.32.0开始,支持函数iif()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57091709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档