首页 > 解决方案 > 累积新柱?python pandas中的窗口函数?

问题描述

我对python和SQL比较陌生,寻求一点帮助。我有一个数据集,每个主题都有任务得分,它看起来像这样(抱歉不知道如何在这里编码 df):

id     task     score
1      1        1
1      2        0
2      1        2
2      2        1
3      1        2
3      2        NaN

我想创建一个新列,其中包含每行每个主题的分数总和,如下所示:

id     task     score  sum_score
1      1        1      1
1      2        0      1
2      1        2      3
2      2        1      3
3      1        2      2
3      2        NaN    2

感谢您的帮助,非常感谢任何帮助,写信或重定向我我想这应该像 SQL 中的 OVER 函数一样工作

标签: pythonsqlpandas

解决方案


在 pandas 中,它会这样写:

data = { "id" :  [1, 1, 2, 2, 3, 3],  "task" : [1, 2, 1, 2, 1, 2],  "score" : [1, 0, 2, 1, 2, np.nan]}
df = pd.DataFrame(data)

df["sum_score"] = df.groupby("id")["score"].transform(np.sum)

结果 :

    id  task    score   sum_score
0   1   1        1.0      1.0
1   1   2        0.0      1.0
2   2   1        2.0      3.0
3   2   2        1.0      3.0
4   3   1        2.0      2.0
5   3   2        2.0

推荐阅读