嵌套案例条件

问题描述 投票:0回答:1

我试图在 python 中找出一个嵌套的 case 条件语句,

输入左表:

enter image description here

输入右表:

enter image description here

最终输出:

enter image description here

目标是根据以下嵌套条件在最终输出中创建“new_value”列:

CASE WHEN value IS NULL 
    AND left_table.country IN (SELECT DISTINCT country from right_table)
THEN CASE WHEN left_class = 'class1' THEN 
        CASE WHEN (
            SELECT value 
            from right_table n 
            WHERE (n.right_class = 'class2') 
                AND n.country= right_table.country 
                AND n.year = left_table.year) IS NOT NULL
        THEN (
            SELECT SUM(value)*2 
            from right_table n 
            WHERE  (n.right_class = 'class1' OR  n.right_class = 'class2') 
                AND n.country= left_table.country
                AND n.year = left_table.year)
        ELSE (
            SELECT SUM(value)*2 
            from right_table n 
            WHERE  (n.right_class = 'class1' OR  n.right_class = 'class3') 
                AND n.country= left_table.country 
                AND n.year = left_table.year) 
        END
    ELSE NULL END  
ELSE value END AS new_value

上面是在sql中,但我需要在python中

python sql dataframe join case
1个回答
0
投票

要将 SQL 逻辑转换为 Python,您可以使用 Pandas 库来处理 DataFrames。因为它提供了一种对 Python 中的表进行过滤、分组和应用转换的方法。

以下是将 SQL 查询逻辑转换为 Python 的方法:

  1. 将 left_table 和 right_table 表示为 pandas DataFrame。
  2. 用嵌套的 if-else 语句替换 CASE 逻辑。
  3. 使用.loc[]根据条件过滤并计算新值。
© www.soinside.com 2019 - 2024. All rights reserved.