You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求将含WHERE子句CASE WHEN条件的SQL转换为Python代码

将给定SQL转换为Python(Pandas)代码

下面用Pandas实现你提供的SQL逻辑,完全匹配原SQL的查询规则:

步骤1:构造输入数据表

先把SQL中的tab1和tab2转换成Pandas DataFrame:

import pandas as pd

# 构造tab1数据(对应SQL中的tab1表)
tab1 = pd.DataFrame({
    'id': [1, 2, 3, 4],
    'country': ['USA', 'Denmark', 'Russia', 'China'],
    'num': [100, 200, 300, 400]
})

# 构造tab2数据(对应SQL中的tab2表)
tab2 = pd.DataFrame({
    'id': [1, 2, 3, 5],
    'person': ['Alice', 'Bob', 'Charlie', 'David']
})

步骤2:执行左连接

对应SQL中的LEFT JOIN tab1 b ON a.id=b.id:

# 左连接,关联字段为id
merged_df = pd.merge(tab2, tab1, on='id', how='left')

步骤3:实现WHERE条件过滤

对应SQL中的CASE WHEN逻辑和<> 'Russia'过滤规则:

# 处理CASE WHEN:将Denmark替换为Swiz,其余保持原country值
processed_country = merged_df['country'].apply(lambda x: 'Swiz' if x == 'Denmark' else x)
# 过滤掉处理后等于Russia的行
filtered_df = merged_df[processed_country != 'Russia']

步骤4:选择目标列

对应SQL中的SELECT a.id, b.country, a.person, b.num:

result_df = filtered_df[['id', 'country', 'person', 'num']]
# 输出结果
print(result_df)

完整整合代码

import pandas as pd

# 构造输入表
tab1 = pd.DataFrame({
    'id': [1, 2, 3, 4],
    'country': ['USA', 'Denmark', 'Russia', 'China'],
    'num': [100, 200, 300, 400]
})

tab2 = pd.DataFrame({
    'id': [1, 2, 3, 5],
    'person': ['Alice', 'Bob', 'Charlie', 'David']
})

# 左连接
merged_df = pd.merge(tab2, tab1, on='id', how='left')

# 条件过滤
processed_country = merged_df['country'].apply(lambda x: 'Swiz' if x == 'Denmark' else x)
filtered_df = merged_df[processed_country != 'Russia']

# 选择列并输出
result_df = filtered_df[['id', 'country', 'person', 'num']]
print(result_df)

执行后会得到和原SQL一致的输出:左连接保留tab2所有行,原country为Denmark的行经逻辑替换后不会被过滤,country为Russia的行被排除。

内容的提问来源于stack exchange,提问作者pc_pyr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:54:55