Python - Pandasql - IIf 函数不起作用错误
Python - Pandasql - IIf Function doesn't work Error
正在尝试执行以下代码:
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)
产生此错误:
PandaSQLException: (sqlite3.OperationalError) no such function: IIf
[SQL: 'SELECT df.*, IIf(A Is Null,[B],[A]) AS NEW_A FROM df;']
我尝试了方括号、globals/locals 等不同语法的各种组合,但找不到问题所在。这个功能根本不存在吗?
我只是从 MS Access 查询中复制了 SQL 查询,但对于其他情况,这工作正常。
SQLite中没有iif()
函数。
在这种情况下,您可以使用 coalesce()
:
SELECT df.*, coalesce(A, B) AS NEW_A FROM df
iif()
的功能可以通过CASE
语句实现:
SELECT df.*, CASE WHEN A is null THEN B ELSE A END AS NEW_A FROM df
但在这种情况下 coalesce()
更简单。
更新:
从 SQLite 的版本 3.32.0 (2020-05-22) 开始,支持函数 iif()
。
正在尝试执行以下代码:
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)
产生此错误:
PandaSQLException: (sqlite3.OperationalError) no such function: IIf
[SQL: 'SELECT df.*, IIf(A Is Null,[B],[A]) AS NEW_A FROM df;']
我尝试了方括号、globals/locals 等不同语法的各种组合,但找不到问题所在。这个功能根本不存在吗?
我只是从 MS Access 查询中复制了 SQL 查询,但对于其他情况,这工作正常。
SQLite中没有iif()
函数。
在这种情况下,您可以使用 coalesce()
:
SELECT df.*, coalesce(A, B) AS NEW_A FROM df
iif()
的功能可以通过CASE
语句实现:
SELECT df.*, CASE WHEN A is null THEN B ELSE A END AS NEW_A FROM df
但在这种情况下 coalesce()
更简单。
更新:
从 SQLite 的版本 3.32.0 (2020-05-22) 开始,支持函数 iif()
。