基于排序键运行total的Python数据帧

基于排序键运行total的Python数据帧,python,teradata,Python,Teradata,我想得到每个排序键的运行总数。我已经检查了大多数帖子的groupby函数。然而,对于我来说,通过不同级别的排序键将它们分组仍然是一个问题。有专家能在这个问题上帮助我吗 非常感谢 这里我有一个数据帧: 排序键 价值 A. 4. AA 9 AAA 6. AAAA 2. AAAA 56 AAB 6. 阿巴 2. 阿巴阿 56 AB 9 阿巴 6. 阿巴 6. 阿巴亚 56 可能存在基于窗口聚合的解决方案,但此任务似乎与递归非常匹配: WITH RECURSIVE cte AS ( SELE

我想得到每个排序键的运行总数。我已经检查了大多数帖子的groupby函数。然而,对于我来说,通过不同级别的排序键将它们分组仍然是一个问题。有专家能在这个问题上帮助我吗

非常感谢

这里我有一个数据帧:

排序键 价值 A. 4. AA 9 AAA 6. AAAA 2. AAAA 56 AAB 6. 阿巴 2. 阿巴阿 56 AB 9 阿巴 6. 阿巴 6. 阿巴亚 56
可能存在基于窗口聚合的解决方案,但此任务似乎与递归非常匹配:

WITH RECURSIVE cte AS
 ( 
   SELECT sort_key, val, val AS running_total, 1 AS len
   FROM tab AS t
   -- start with a single charcater
   WHERE  Char_Length(t.sort_key) = 1

   UNION ALL
   -- do the running total
   SELECT t.sort_key, t.val, running_total + t.val, cte.len +1
   FROM tab AS t
   JOIN cte -- next key starts with the previous key and adds a char
     ON Substring(t.sort_key FROM 1 FOR len) = cte.sort_key
    AND Char_Length(t.sort_key) = len +1 
 ) 
SELECT *
FROM cte
ORDER BY sort_key

MySQL还是Teradata?基于哪种逻辑运行总重置?您好,谢谢您的回复!输出来自Teradata。在对Teredata进行查询或通过Python处理时,我可以进行运行总计。重置基于排序键。您可以在这里看到排序键应该是A(值:5,运行总数:5)>AA(值:2,运行总数:7)>AAA(值:3,运行总数:10)。但是有一个替代的AAB应该是(值:5,运行总数:5+7=12)。希望它是清楚的!这真的很棘手。排序键真的像示例A-AA-AAB等吗?逐字符添加字符?@dnoeth,是的。排序键按升序排列。运行总数是根据上一个字符串加起来的。